找回密码
 注册
搜索
查看: 836|回复: 2

[讨论] 大端,小端存储在实际应用时的细节

[复制链接]
发表于 2008-8-28 10:45:17 | 显示全部楼层 |阅读模式
  最近在把一个8BIT屏换到16BIT机器上时,遇到了大小端口存储的问题,所以发个帖子,学习下

  有个疑问,不管大端还是小端,是不是只是在内存的位置顺序不同,而对其进行移位时不是按照内存中的位置移位的啊?

  例如data=0X1234

  大端1234

  小端3412

  大端,小端方式下移位统统为

  (data>>8)&0xff等于0x12,还是和大小端方式有关西啊?

  假如一个大端方式存储的数组 U8 data[8],在小端存储的系统上强制转化为U32类型,那么存储的格式是如何变化呢?
      以为想用DMA刷屏,所以需要知道在内存中的变化

  以前没在意这些,所以用起来也没什么区别,现在注意到反而糊涂了[br]<p align=right><font color=red>+3 RD币</font></p>
发表于 2008-8-29 21:42:46 | 显示全部楼层
不管大小端,(data>>8)&0xff都是0x12。
不考虑数据对其的话,u8 data[8] 强转u32在同一个cpu上是没有问题的。
只是在多系统的情况下才需要关注。
如果你的cpu字节序和显示屏ic的不一样,那只要针对16位或者32位转移下就可以了
比如U32转序:
#define ntohl(n)  ((((U32)n)&0x000000ff)<<24|                            (((U32)n)&0x0000ff00)<<8|                            (((U32)n)&0x00ff0000)>>8|                            (((U32)n)&0xff000000)>>24)
点评回复

使用道具 举报

 楼主| 发表于 2008-8-31 21:11:49 | 显示全部楼层
谢谢楼上的,已经用程序验证了
    强转不会对此有影响的,只是大端,小端对DMA方式有影响而已,DMA要求图像的格式为大端,所以DMA之前需要把数据全转化为小端
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 04:06 , Processed in 0.044129 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表