1
|
jeremysprofile Subin George · 技术社区 · 7 年前 |
![]() |
1
3
正在尝试字节反转a 已签署 整数听起来不像是一个定义良好的算术运算,因为最高有效位的行为是整数符号的指示符,在处理整数变量时,将其移到其他位置没有多大意义。
更有可能的是,您可能有一个表示32位有符号整数的4字节序列,但需要进行字节反转,以便在不同的CPU端之间进行转换。要做到这一点,您可以简单地将数量视为无符号的,然后让
或者,稍微安全一些:
这是因为当对相同位深度的整数应用强制转换操作时,实际上会保持内存中的表示不变。在进行字节反转时,这会忽略符号的重要性(以及与有符号整数的二补表示相关的任何细微之处)。我不确定这种行为是否受到C标准的保证(这可能是语言律师的问题),但这可能是一种非常常见的行为。描述位于
www.cplusplus.com
指示如果系统对其有符号整数(非常常见)使用两个补码表示,则在
|
![]() |
2
2
只有当本机系统是little endian时,这才有意义,因为在big endian系统上将数据转换为带符号的little endian有什么意义?
所以在一个小端系统上,只需将大端整数转换为无符号整数,使用
|
![]() |
Nils · 二进制文件中快速反转float32端的方法 7 年前 |
![]() |
rubyquartz · 交换无符号短整数的字节 7 年前 |
![]() |
Lefteris · 将二进制数据读取到long int 7 年前 |
![]() |
smokums · 小端点编码Go lang 7 年前 |
|
user3003999 · 字节顺序错误代码是如何工作的? 7 年前 |
![]() |
memeKing · Python-数据包处理和修改 7 年前 |
![]() |
Juan González · 火星MIPS模拟器是大端还是小端 7 年前 |