跳转至

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 保证中间值按无符号解释。

查看固定 commit 源码 · 返回证据索引