gpt4 book ai didi

c++ - 使用 char 或 unsigned char 数组存储原始数据更好吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:15 25 4
gpt4 key购买 nike

当需要在内存中缓冲一些原始数据时,例如来自流的数据,使用 char 数组还是 unsigned char 数组更好?我一直使用 char 但在工作中有人说它更好 unsigned char 我不知道为什么。

最佳答案

更新:C++17 引入 std::byte ,这比使用任何方式的 char 更适合“原始”数据缓冲区。

对于早期的 C++ 版本:

  • unsigned char 强调数据不“只是”文本

  • 如果您有有效的“字节”数据,例如一个压缩流、一个数据库表备份文件、一个可执行图像、一个 jpeg... 然后 unsigned 适合上面提到的二进制数据内涵

    • unsigned 更适合您可能希望对二进制数据执行的某些操作,例如对于有符号类型的某些位操作,存在未定义和实现定义的行为,unsigned 值可以直接用作数组中的索引

    • 您不能不小心将 unsigned char* 传递给需要 char* 的函数,并将其作为假定文本进行操作

      <
    • 在这些情况下,通常更自然地认为这些值在 0..255 范围内,毕竟 - 为什么“符号”位与数据?

  • 如果您要存储的“原始数据”在应用程序逻辑/设计级别恰好是 8 位数字数据,那么一定要选择 unsigned明确地 signed char 根据您的需要

关于c++ - 使用 char 或 unsigned char 数组存储原始数据更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24181172/

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