1
3
正在尝试字节反转a 已签署 整数听起来不像是一个定义良好的算术运算,因为最高有效位的行为是整数符号的指示符,在处理整数变量时,将其移到其他位置没有多大意义。
更有可能的是,您可能有一个表示32位有符号整数的4字节序列,但需要进行字节反转,以便在不同的CPU端之间进行转换。要做到这一点,您可以简单地将数量视为无符号的,然后让
或者,稍微安全一些:
这是因为当对相同位深度的整数应用强制转换操作时,实际上会保持内存中的表示不变。在进行字节反转时,这会忽略符号的重要性(以及与有符号整数的二补表示相关的任何细微之处)。我不确定这种行为是否受到C标准的保证(这可能是语言律师的问题),但这可能是一种非常常见的行为。描述位于
www.cplusplus.com
指示如果系统对其有符号整数(非常常见)使用两个补码表示,则在
|
2
2
只有当本机系统是little endian时,这才有意义,因为在big endian系统上将数据转换为带符号的little endian有什么意义?
所以在一个小端系统上,只需将大端整数转换为无符号整数,使用
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |