sgdd.net
当前位置:首页 >> 低字节在前高字节在后 >>

低字节在前高字节在后

高字节和低字节是指: 一. 计算机的数值应视为连续若干个二进制位的集合;二. 所谓高、低字节就是此集合中位地址高/低的二进制位集合;三. 例如定义一个unsigned short型变量在0x1234 5678,那么这个变量的地址就是0x1234 5678,占用0x1234 5678与0x1234 5679两字节存储空间,其中0x1234 5678是低字节、0x1234 5679是高字节.四、 一个16进制数有两个字节组成,例如:A9.高字节就是指16进制数的前8位(权重高的8位),如上例中的A.低字节就是指16进制数的后8位(权重低的8位),如上例中的9.

如果发送方发送的是6812H,则根据此规约,不考虑帧内格式字符,纯数据传输的比特流将是:01001000 00010110 不过由于标准UART本身就是低位前高位后的协议,所以如果你是使用标准UART的话,从串口缓冲区所取到的数据帧仍然分别是0x12、0x68.至于UDP端口这块儿,俺不太清楚,你可以查一下底层硬件传输时比特流的顺序.如果默认是高位在前的话,就需要增加位序翻转处理;反之则不需要.

最直接的方法:using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { byte[] b = { 0x80, 0x02 }; short x = (short)((b[0] << 8) + b[1]); Console.WriteLine("十进制:{0}, 十六进制:{1:x}", x, x ); } } }输出结果为:十进制:-32766, 十六进制:8002

大家都知道数据运算都是低位向高位进位的,低字节在前高字节在后可以在处理数据前读取多少处理多少,写数据时处理完多少写回多少,这样大大提高了执行效率. 如果所有的数据都是读完在处理,处理完在写回,这样很浪费系统时间的.

有个使用指针的方法:int x = 1;if(*(char *)&x == 1) printf("little-endian\n");else printf("big-endian\n");另外一个可能是用联合.

楼上回答很没谱高字节 和低字节 ,即高8位低8位打个比方1234,12为高字节,34为低字节高字节在前即1234,低字节在前3412这是由于硬件和系统原因,网络中以低字节在前为标准

例如:一个十六进制数1234H,34H就为低字节(低八位),而12H就为高字节了(高八位).

在编程语言中,字符一般是占16位,8位为一字节,所以有高位字节和低位字节.一个16进制数有两个字节组成,例如:A9.高字节就是指16进制数的前8位(权重高的8位),如上例中的A.低字节就是指16进制数的后8位(权重低的8位),如上例中的9.

高字节在前

高字节在前,这个没有为什么的,只是一种规定,大家都这样认定在校验时就不会错,如果发送端是高字节在前,而收信端在校验时当做是低字节在前的话肯定得到校验错误的结果.

网站首页 | 网站地图
All rights reserved Powered by www.sgdd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com