大小端模式2

一、看似可以实际不行的测试大小端的方法

  • 位与的方式不能测试大小端模式
  • 位与运算是编译器提供的计算,这个运算是高于内存层次的,位与运算在二进制层次具有可移植性,位于一定是高字节位与低字节,与二进制的存储方式无关。
#include <stdio.h>
int main(void)
{
        int a=1;
        int b=a&0xff;
        printf("b=%d.\n,b");   //不能测试机器的大小端模式
        return 0;
}
  • 移位方式不能测试大小端模式
  • 因为c语言对这些运算符的级别高于二进制层次,右移运算永远是将低字节移出。
#include <stdio.h>
int main(void)
{
        int a,b;
        a=1;
        b=a>>1;
        printf("b=%d.\n,b");    //不能测试大小端模式
        return 0;
}
  • 强制类型转换不能测试大小端模式
#include <stdio.h>
int main(void)
{
        int a;
        char b;
        a=1;
        b=(char*)a;
        printf("b=%d.\n,b");    //不能测试大小端模式
        return 0; 
}

二、通信系统中的大小端(数组的大小端)

  • 比如要通过串口发送地址0x2345678给接收方,但因为串口本身的限制,只能以字节为单位发送,所以需要发送4次;接收方分4次接收。
  • 通信双方要有一个默契,先发的字节是高位还是低位。
  • 一般来说先发低字节叫小端,先发高字节叫大端。
  • 在通信协议里面会明确告诉你先发的是高字节,还是低字节。
  • 在通信协议中大小端是非常重要的,使用通信协议,还是自己定义通信协议,一定要标明大小端问题。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容