这个问题已经在这里有了答案:
7年前关闭。
我在这一部分遇到麻烦:如果我想使用32位数字,并且想要将其字节(1字节= 8位)从大字节序转换为小字节序。例如:
可以说我有数字1。
在32位中,结果如下所示:
1st byte 2nd byte 3rd byte 4th byte
00000000 00000000 00000000 00000001
我想要它,看起来像这样:
4th byte 3rd byte 2nd byte 1st byte
00000001 00000000 00000000 00000000
因此,具有最低有效值的字节会首先出现。我以为您可以使用for循环,但是我不确定如何在C++中移位位/字节。例如,如果用户输入1,而我不得不像上面的示例一样将其位移,则我不确定如何将1转换为位,然后进行位移。有人能指出我正确的方向吗?谢谢!
最佳答案
<<
和>>
是C语言和大多数其他C风格语言中的按位移位运算符。
一种执行所需操作的方法是:
int value = 1;
uint x = (uint)value;
int valueShifted =
( x << 24) | // Move 4th byte to 1st
((x << 8) & 0x00ff0000) | // Move 2nd byte to 3rd
((x >> 8) & 0x0000ff00) | // Move 3rd byte to 2nd
( x >> 24); // Move 4th byte to 1st
关于c++ - 无符号整数成小端格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13652586/