【问题标题】:how to fill char array filled with uint8_t如何填充用uint8_t填充的char数组
【发布时间】:2019-10-03 12:08:30
【问题描述】:

我想创建一个 char 数组并给出 8 位值。例如; buf[0] = 0000 0001; // 1 和 buf[1] = 0000 0010; //2 等等。

当我用断点观看时,我看到的 buf 是 empty。在其他帖子中,人们提供诸如“如果您想查看整数,请放置(无符号)强制转换”之类的建议,它仅适用于 cout。

我想要的只是用有序递增的数字填充一个 char 数组。我使用了 int 但它是 4 个字节,相反我认为给 uint8_t 更适合用数字填充 char 数组。

char *buf = new char[5];

    for (uint8_t i = 0; i < 5; i++)
    {
        buf[i] = i;
    }

[编辑] 这是我看到的,我以这种方式更改了循环 int

【问题讨论】:

  • 你用的是什么调试器?
  • 你为什么使用 uint8_t 而不仅仅是 char?
  • 你是怎么确定数组最后是空的?
  • 代码看起来不错,只是值将从零开始,而不是像您在散文中指出的那样。
  • @Quentin 视觉工作室 2019

标签: c++ char uint8t


【解决方案1】:

看起来您的调试器假设所有char* 都指向C 风格的字符串。由于它遇到的第一个char 的值为零,因此它标志着所述字符串的结尾。

大多数调试器允许您提供任意表达式进行评估。如果您使用强制转换提供它是实际上是一个数组的信息,它可能会正确显示该数组:

reinterpret_cast<char(*)[5]>(buf)

无论如何,你不应该使用new,而应该使用std::vector&lt;char&gt;,另外调试器应该知道如何正确显示。

【讨论】:

  • 我不能使用向量,我发送UDP包,库的sendto方法只接受char *数组
  • @Deniz std::vector 有一个 data() 函数正是为了这个目的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 2013-04-05
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多