用c程序判断平台的字节序

程序来源:《深入理解计算机系统第二版》

#include <stdio.h>

typedef unsigned char *byte_pointer;  /*将byte_pointer定义为指向类型为“unsigned char”的指针变量*/

void show_bytes(byte_pointer start, int len)
{
    int i;
    for (i = 0; i < len; i++)
        {printf(" %.2x ", start[i]);    /*利用数组表示法引用指针,整数一次以两个数字的十六进制数输出*/
        printf("  %p", &start[i]);      /*打印指针变量指向的第i字节的地址*/
        }
    printf("\n");
}
void main()
{
      int val = 0x12345678;
      byte_pointer valp = (byte_pointer) &val; /*强制把整形变量转换为byte_pointer*/
      show_bytes(valp, 1); /* A. */
      show_bytes(valp, 2); /* B. */
      show_bytes(valp, 3); /* C. */
      show_bytes(valp, 4); /* D. */
      show_bytes(valp, 5); /* E. */
}


[~/c/csapp/code/data]#gcc -o show-bytes_2.so  show-bytes_2.c 
[~/c/csapp/code/data]#./show-bytes_2.so 
 78   0x7fff50aca8d4
 78   0x7fff50aca8d4 56   0x7fff50aca8d5
 78   0x7fff50aca8d4 56   0x7fff50aca8d5 34   0x7fff50aca8d6
 78   0x7fff50aca8d4 56   0x7fff50aca8d5 34   0x7fff50aca8d6 12   0x7fff50aca8d7
 78   0x7fff50aca8d4 56   0x7fff50aca8d5 34   0x7fff50aca8d6 12   0x7fff50aca8d7 d4   0x7fff50aca8d8
 

 结果显示,低字节位对应低地址位.所以,当前使用的linux是小端存储方式



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值