读书人

C语言中的 UINT32转char类型的有关问

发布时间: 2012-06-19 14:45:20 作者: rapoo

C语言中的 UINT32转char类型的问题
想实现从一个内存地址中读取一个16位寄存器的数, 然后保留低8位,并将结果传给char类型参数指针*pdata,实现如下:
pdata = (char *)((*(UINT32 *)IO_MEM_BAR2[num] + 0x24)&0x00ff);

IO_MEM_BAR2[num]为内存基地址,Ox24为偏移量

这种写法不知是否有误?还请高手们指教,谢谢!!



[解决办法]

探讨

*pdata = (char)((*(UINT32 *)IO_MEM_BAR2[num] + 0x24) & 0x00ff);
这样可不可以?
还有就是大小端机是怎么具体界定的,及在编程时,应该注意什么问题?谢谢

[解决办法]
探讨

还有一个问题就是你的架构是否要求读写数据的地址对齐?
如果要求的话,除非你能保证IO_MEM_BAR2[num]已经按照你的读取方式,比如32位或者16位对齐了

不然你还是老实的8位8位的读吧, 不然没对齐就bus error了


架构要求读写数据的地址对齐,怎么讲? 不太明白,求解释

读书人网 >C语言

热点推荐