读书人

c语言处理大小端有关问题

发布时间: 2013-07-11 15:38:46 作者: rapoo

c语言处理大小端问题
有这么一段程序

#include <stdio.h>
#include <stdint.h>
struct abc {
uint16_t i;
};
int main()
{
struct abc info;
scanf("%x",&(info.i));
printf("%x\n",info.i);
}

在pc上运行正常,输入0x01显示0x01
但在powerpc上运行,输入0x01,显示0x0
poerpc上都是大端模式,应该怎么解决呢

[解决办法]
怎么这么多人误导,这个显然跟大小端有关啊,不过最根本原因是越界了
uint16_t是2字节,%d是4字节,小端把01填入i,大端把0填入i
[解决办法]
引用:
Quote: 引用:

怎么这么多人误导,这个显然跟大小端有关啊,不过最根本原因是越界了
uint16_t是2字节,%d是4字节,小端把01填入i,大端把0填入i



那么%x也不行吗,我也觉得是scanf输入的问题,但不知道应该怎么解决

不看回帖么?如果不改结构就用%hx,或者把uint16_t修改为uint32_t,总之scanf参数要和数据类型匹配

读书人网 >C语言

热点推荐