gpt4 book ai didi

c++规范化跨系统的数据大小

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:08 25 4
gpt4 key购买 nike

我有一个包含三个变量的结构:两个无符号整数和一个无符号字符。据我了解,无论在何种操作系统上,C++ char 始终为 1 个字节。对于其他数据类型则不能这样说。我正在寻找一种规范化 POD 的方法,以便在保存到二进制文件中时,生成的文件在编译代码的任何操作系统上都是可读的。

我通过添加 #pragma 更改我的结构以使用 1 字节对齐,如下所示:

#pragma pack(push, 1) 
struct test
{
int a;
}
#pragma pack(pop)

但这并不一定意味着 int a 在每个操作系统上都恰好是 4 个字节,我不认为?有没有办法确保从我的代码中保存的文件始终可读?

最佳答案

您可以在 std::int32_t 中找到固定宽度的整数类型(如 std::uint16_t<cstdint> ) .您的 C++ 标准库实现可能不包括 <cstdint> (它不是当前 C++ 标准的一部分;它是 C++0x 的一部分),在这种情况下 Boost has an implementation这应该适用于大多数平台。

请注意,您仍然需要考虑字节序和对齐等问题。如果您的代码需要在具有不同数字表示(例如一个补码和二进制补码)的平台上运行,您也需要考虑这一点。

关于c++规范化跨系统的数据大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4548515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com