ev-abseil-bit-cast-endian-003¶
| 字段 | 值 |
|---|---|
| 项目 | abseil/abseil-cpp |
| 固定 commit | 2065f4ded055 |
| 路径 | absl/base/internal/endian.h |
| 行段 | L139-L147 |
| 特性 | std::bit_cast |
| 许可证 | Apache-2.0 |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-26 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用 bit_cast 在有符号与无符号整数之间按位重解释
为什么典型¶
端序转换需要保持位模式不变;static_cast 会做数值转换,bit_cast 才能把有符号值按无符号位模式搬运。
摘录¶
inline int16_t FromHost(int16_t x) {
return bit_cast<int16_t>(FromHost16(bit_cast<uint16_t>(x)));
}
inline int32_t FromHost(int32_t x) {
return bit_cast<int32_t>(FromHost32(bit_cast<uint32_t>(x)));
}
inline int64_t FromHost(int64_t x) {
return bit_cast<int64_t>(FromHost64(bit_cast<uint64_t>(x)));
}
备注¶
生产头文件;双重 bit_cast 保证中间值按无符号解释。