0

我试图将小端转换为大端并遇到麻烦。我有一个数组,它有 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

谢谢大家任何帮助将不胜感激

4

1 回答 1

0

您需要将底部向上移动八位,而不是四位,并且不移动顶部:

output = (array[0]<<8) | array[1];

有关更多讨论和代码,请参阅在 C 中将大端转换为小端。

于 2013-04-20T05:49:34.433 回答