将小端转换为大端,包括 0(零)
Posted
技术标签:
【中文标题】将小端转换为大端,包括 0(零)【英文标题】:Convert little endian to big endian including 0 (zero) 【发布时间】:2013-04-20 05:46:24 【问题描述】:我正在尝试将小端转换为大端并且遇到了麻烦。 我有一个数组,它有 2 个字节的 unsigned char,它是十六进制值。 我想让它变成大端,因为零已经消失了,我无法得到我想要的值。
例如, 我的目标是得到
array[0] = 0b
array[1] = 40
output = 0b40 so i can see this value as 2880 when %d
所以我用了
output = (array[1]>>4) | (array[0]<<4);
但实际上,我明白了
printf("output = %x04\n", output);
output = 00b4
我希望输出为 0b40,这样我可以得到 2880
printf("output = %x\n", output);
output = 0b40
printf("output = %d\n", output);
output = 2880
感谢大家的帮助,我们将不胜感激
【问题讨论】:
【参考方案1】:您需要将底部向上移动八位,而不是四位,并且不移动顶部:
output = (array[0]<<8) | array[1];
有关更多讨论和代码,请参阅convert big endian to little endian in C。
【讨论】:
以上是关于将小端转换为大端,包括 0(零)的主要内容,如果未能解决你的问题,请参考以下文章