数据报文解析中的高低位转换问题。
bit(比特)
为1数据位,取值 0或1;
byte(字节)
1字节8个bit ,一个byte表示无符号类型unsigned表示为0-255之间的值,表示有符号为-128-127。何为有符号类型,即可以表示为负数,0,正数,而无符号类型则仅表示为大于等于0的值
word(字)
在16位的系统中(比如8086微机) 1字 (word)= 2字节(byte)= 16(bit)
在32位的系统中(比如win32) 1字(word)= 4字节(byte)=32(bit)
在64位的系统中(比如win64)1字(word)= 8字节(byte)=64(bit)
最小的内存块成为“字节”,储存的基本单位称为“字”。
最近做数据采集时,采集的16进制报文,流量占用数据区4个字节,其中低位在前,高位在后。
报文为:
37 07 00 00
流量数据占用四个字节,这条数据只占用了2个字节,低位在前那么就是 37是低位,07是高位;
上面说了一个字节8个bit 那么2个字节就是16个bit 转换程二进制显示就是
00000000 00000000
二进制数据 从右到左依次是低位到高位,十进制也是这样 例如:86000 八万六 最高位是万位在最左侧。
37位低位,07是高位 分别将 16进制的 37 和07 转换为二进制数据
37----》 110111
07----》 111
按照高低位规则转换后得到二进制数据
00000111 00110111
将其转换为10进制数据得到
1847
得到最终展示的数据1847.
一般一个16位(双字节)的数据,比如 FF1A (16进制)
那么高位字节就是FF,低位是1A
如果是32位的数据,比如 3F68415B
高位字 是3F68
低位字是415B