16进制和二进制字节的问题
16进制和二进制字节的问题
楼主lostrex(★堕落的激情★)2006-05-26 11:23:52 在 VB / 基础类 提问 通过VB可以发送二进制命令字节,通过16进制来表示,例如发送:
FE 01 02 03 ID 00 CH
ID是某一设备的编号,通过手工输入的,现在的问题是:
如果ID是一个数字字符,例如21,用Hex(21)将它转换为16进制之后,再怎么将它转化为二进制串发送呢?例如:
Dim SenCode() As Byte
Dim BinNum As Byte
BinNum = Hex(21) "不知道可不可以这么写
SenCode(0) = &HFE
SenCode(1) = &H1
SenCode(2) = &H2
SenCode(3) = &H3
SenCode(4) = BinNum "不知道可不可以这么写
SenCode(5) = &H0
SenCode(6) = &H0
然后最后的CH为效验和,是SenCode(1) + SenCode(2) + SenCode(3) + SenCode(4) + SenCode(5)
请问这个效验和怎么写呢? 问题点数:50、回复次数:3Top
1 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2006-05-26 11:29:18 得分 30
SenCode(4) = 21 就可以了
SenCode(6)=0
for i=1 to 5
SenCode(6)=SenCode(6) Or SenCode(i)
next
不过你要保证你前面的几个数加起来不超过255,否则这样单纯的求和就没有啥意思了
发出去的时候直接给发整个数组Top
2 楼benyfeifei(狒狒)回复于 2006-05-26 12:25:25 得分 20
十六进制和二进制都是一会回事,所谓的几进制都是数的不同的表示方式。
SenCode(4) = 21 和SenCode(4) = val(hex(21))是一样的。
"实现校验字CRC
Public Function CRC_SUM(data() As Byte) As Byte
Dim i As Integer
Dim result As Integer
For i = LBound(data) To (UBound(data) - 1)
result = result + data(i)
Next
CRC_SUM = CByte(result And &HFF)
End FunctionTop
3 楼yoyo9250(俏)回复于 2006-05-26 13:54:54 得分 0
用哪种进制都可以,若用十六进制
效验和:
For i = 0 To 6
sum = sum Xor SenCode(i)
NextTop
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
