gpt4 book ai didi

c++ - 在 C++ 中实践什么用于字节操作 uint8 或 char?

转载 作者:行者123 更新时间:2023-11-27 23:19:58 32 4
gpt4 key购买 nike

我从 Java 转到 C++,我需要类似于 byte[] 的东西来自 java 。我可以使用 std::vector<>对于像操作这样的简单数组,但我需要回答 C++ 中用于字节操作的实践 uint8char ? (我有很多用 & 0xff 和 >> number 在数组中打包更大的整数,所以它需要很快)

最佳答案

假设uint8是一个 8 位无符号整数类型,“正常”C++ 实现的主要区别在于 char不一定是无符号的。

在“非正常”的 C++ 实现中,可能存在更显着的差异 -- char可能不是 8 位。但是,你会定义什么 uint8无论如何都要进行这样的实现?

符号差异是否重要取决于您如何使用它,但根据经验,最好使用带位运算符的无符号类型。也就是说,他们都被提升为 int按位&无论如何(再次在“正常的”C++ 实现上)并且对于 & 真的无关紧要,它在实践中不会引起意外。但是使用 <<负符号值会导致未定义的行为,因此请避免这种情况。

所以,使用无符号类型。如果你写的最方便的方式是uint8 ,并且您知道您的代码处理八位字节,并且只会在 char 的系统上运行是一个八位字节,那么你不妨使用它。

如果要使用标准类型,请使用 unsigned char .或者 uint8_t为了故意防止您的代码在“非正常”实现上编译,其中 char不是八位字节。

关于c++ - 在 C++ 中实践什么用于字节操作 uint8 或 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13778568/

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