Forums: » Register « |  Free Tools |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support |

New Free Tools on Dev Shed!

#1
June 12th, 2013, 09:40 AM
 reggie718
Registered User

Join Date: Jun 2013
Posts: 3
Time spent in forums: 2 h 15 m 10 sec
Reputation Power: 0
Problems with rotating a byte in vb6

Hello guys,
i am trying to rotate a byte in VB6 witout a CARRY(left and right ) .
i am doing it OK ,it works.
But, i dont know how to rotate a byte with a CARRY !
Do you have any kind of code that can show me how to rotate a byte left and right with a CARRY in VB6?
THANKS !
here is my code :

Public Function shrByte(ByVal Value As Byte, ByVal Shift As Byte) As Byte
shrByte = Value
If Shift > 0 Then
shrByte = Int(shrByte / (2 ^ Shift))
End If
End Function

Public Function shlByte(ByVal Value As Byte, ByVal Shift As Byte) As Byte
shlByte = Value
If Shift > 0 Then
Dim i As Byte
Dim m As Byte
For i = 1 To Shift
shlByte = (shlByte And &H7F) * 2
Next i
End If
End Functio

#2
June 13th, 2013, 05:27 PM
 couttsj
Contributing User

Join Date: Aug 2011
Posts: 268
Time spent in forums: 4 Days 51 m 42 sec
Reputation Power: 44
Try this:
Code:
```Public Function shlByte(ByVal Value As Byte, ByVal Shift As Byte) As Byte
Dim i As Byte
Dim m As Byte
shlByte = Value
If Shift > 0 Then
For i = 1 To Shift
m = shlByte / 256
shlByte = (shlByte And &H7F) * 2 + m
Next i
End If
End Function

Public Function shrByte(ByVal Value As Byte, ByVal Shift As Byte) As Byte
Dim i As Byte
Dim m As Byte
shrByte = Value
If Shift > 0 Then
For i = 1 To Shift
m = (shrByte Mod 2) * 128
shrByte = shrByte / 2 + m
Next i
End If
End Function```

J.A. Coutts

#3
June 25th, 2013, 04:10 AM
 reggie718
Registered User

Join Date: Jun 2013
Posts: 3
Time spent in forums: 2 h 15 m 10 sec
Reputation Power: 0
problems with byte rotating in vb6

Hi,
i am having a problem while trying to write the right rotate byte (without carry ) functions "<<" and ">>" . i am trying to do the same like the functions << and >> are in the C language . here is my code :

Public Function shrByteInt(ByVal Value As Byte, ByVal Shift As Byte) As Integer
shrByteInt = Value
If Shift > 0 Then
shrByteInt = Int(shrByteInt / (2 ^ Shift))
End If
End Function

HashBuf(0) = 0
HashBuf(1) = 0
'HashBuf(2) = 0
j = 0
For i = 0 To 2
bVal = (shrByteInt(bBuffer(i), 7))
bVal = bVal And &H1
If (bVal = 1) Then
HashBuf((j / 8)) = (HashBuf(j / 8)) Or (Int(2 ^ (j Mod 8)))
End If
'End If
bVal = (shrByteInt(bBuffer(i), 6))
bVal = bVal And &H1
If (bVal = 1) Then
HashBuf((j + 1) / 8) = (HashBuf((j + 1) / 8)) Or (Int(2 ^ ((j + 1) Mod 8)))
End If
j = j + 2
Next

At the C code (while using the "<<" and ">>" operators ) i am getting the output of (result of hashbuf ) : 1 63 0
and in my code(VB6) i am getting the input : 1 31 32
31+32 =63 and somehow the VB6 compiler is putting 63 into 2 bytes instead of one . i dont understand why
do you have any idea ?
thanks !

#4
June 25th, 2013, 04:15 AM
 reggie718
Registered User

Join Date: Jun 2013
Posts: 3
Time spent in forums: 2 h 15 m 10 sec
Reputation Power: 0

Dim bVal As Integer
Dim HashBuf(2) As Byte
Dim bBuffer(8) As Byte
For i = 0 To 8
bBuffer(i) = 240
Next

the output is :
in C language :
bval=1
hashbuf[0]=63
hashbuf[1]=0

in VB6 language:
bval=1
hashbuf[0]=31
hashbuf[1]=32

#5
June 25th, 2013, 12:01 PM
 couttsj
Contributing User

Join Date: Aug 2011
Posts: 268
Time spent in forums: 4 Days 51 m 42 sec
Reputation Power: 44
Sorry, but I could make sense of your code snippets because they are incomplete. With Notepad, open your form (eg. Form1.frm). Scroll down and highlight and copy only the code. Paste it into your reply and place the code tags in front of and behind.

square left bracket & "code" & square right bracket
.....
...
..
square left bracket & "/code" & square right bracket

J.A. Coutts

 Viewing: Dev Shed Forums > Programming Languages - More > Visual Basic Programming > Problems with rotating a byte in vb6