tempad
Readygo技术搜索引擎 >>防火墙 >> 16进制和二进制字节的问题

16进制和二进制字节的问题

Readygo技术搜索引擎 网络搜索 efish 2008-1-19 4:50:06

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

责任编辑: efish 参与评论 查找更多:
相关文章
求救:( 女的是不是特受关注 求救:( 女的是不是特受关注
怎样禁止访问文件 怎样禁止访问文件
关于对象名无效,是因为用户默认数据的问题 关于对象名无效,是因为用户默认数据的问题
谁来帮帮我bean 谁来帮帮我bean
在此上下文中不允许使用 *。此处只允许使用常量、表… 在此上下文中不允许使用 *。此处只允许使用常量、表达式或变量。不允许使用列名。
从百度过来的中文参数成乱码了,如何解决? 从百度过来的中文参数成乱码了,如何解决?
关于首页生成静态 关于首页生成静态
存储过程简介 存储过程简介
如何使用DataGrid针对每条记录可打开新链接窗口,同… 如何使用DataGrid针对每条记录可打开新链接窗口,同时将该条记录的多个字段值作为参数进行传递,用于新的窗口?新打开的窗口如何控制大小
求现代数据库管理第七版的电子书的下载地址 求现代数据库管理第七版的电子书的下载地址
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎