Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 C++11 及更高版本,我问自己是否可以安全地获取数据类型所需的字节数,例如std::uint16_t发送长度不可知的协议。更准确地说,打电话安全sizeof(std::uint16_t)吗?我可以假设这总是2吗?怎么样std::int16_t?
std::uint16_t
sizeof(std::uint16_t)
std::int16_t
在 C++ 中获取数据类型的字节数的安全方法
那将是sizeof运营商。
sizeof
更准确地说,调用 sizeof(std::uint16_t) 是否安全,我可以假设这总是 2 吗?
不可以。您只能依赖于 byte 为 8 位。
std::int16_t 呢?
相同的。
对于网络通信,您可能需要知道一个类型有多少个八位字节。可以像这样安全地计算:sizeof(std::uint16_t) * (CHAR_BIT / 8),对于 ,将是 2 std::uint16_t。请注意,并非所有系统都必须具有该std::uint16_t类型。
sizeof(std::uint16_t) * (CHAR_BIT / 8)