fedora字节序

我在fedora14上进行的编程,意图创建一个结构体内包含两个char类型,分别占用2个位和6个位:

并创建一个数组list[] = "123456789";将list的地址传给int指针,以十六进制打印整数

#include<stdio.h>

#include<stdlib.h>

#pragma pack(1)

struct S{

   unsigned char x1:2,

                   x2:6;};

#pragma pack()

int main()

{

  struct S s;

  void *i;

  char list[10]="123456789";

  s.x1 = 0x1;

  s.x2 = 0x9;

  i = &s;

  printf("struct s's size is :%d, number is :%c\n",sizeof(struct S),*(char *)i);

  i = list;

  printf("list into int is :%x\n",*(int *)i);

}

 

结果:

struct s's size is :1, number is :%

list into int is :34333231

在ASCII码中%时0x25,换句话说其在存储时是以:0010 0101存储的,x1的数值是01 ,x2的数值是001001,相当于将x1的01直接放于x2再存储

当我将x2的值换为0xA时,打印的字符为')',也就是0x29,由x2的001010 后加上01组成的0010  1001。为小端字节序

在list中,将首地址以int型地址输出整数,结果为34333231对应着4321的ascii码,故是以4个字节为单位,倒序输出的。为小端字节序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值