gpt4 book ai didi

C++ : interpreting hex in a char* as uint8_t

转载 作者:行者123 更新时间:2023-11-30 00:35:38 24 4
gpt4 key购买 nike

我需要一个具有一些十六进制值的以下格式的 char*。

char *buf = new char(12);
buf[0] = 0x2;
buf[1] = 0x0;
buf[2] = 0x3;
buf[3] = 0x3;
buf[4] = 0x0;
buf[5] = 0x0;
buf[6] = 0x6;
buf[7] = 0x4;
buf[8] = 0x0;
buf[9] = 0x2;
buf[10] =0x0;
buf[11] =0x0;

当我尝试以这种方式打印它们时 -

std::string hex_string;
create_hex_str((uint8_t*)buf, 12, hex_string);
std::cout << hex_string;

打印函数的定义:

void create_hex_str(uint8_t *data, int len, std::string &tgt)
{
std::stringstream ss;
ss << std::hex << std::setfill('0');
ss << "\n";
for (int i=0; i<len; i++)
{
ss << std::setw(2) << static_cast<unsigned>(data[i]) << " ";
}
target = ss.str();
}

我得到完全不同的输出: f0 a1 56 08 28 02 3c f6 40 f8 56 08

有人可以帮帮我吗?如果这是一个非常微不足道的问题,我很抱歉,但我根本无法理解这里发生了什么。我究竟做错了什么?我必须将字节数组表示为 char*。

最佳答案

new char(12);

为单个字符分配内存并将其初始化为值 12。使用 []分配数组:

new char[12];

但只使用new[]如果您确实需要动态分配;如果你只需要一个代码块中的数组,那么使用一个自动的:

char buf[12];

如果你真的需要new[] , 然后记得在完成后删除它(使用 delete[] ,而不仅仅是 delete )。更好的是,使用 RAII类型如 std::stringstd::vector<char>为您管理阵列。

关于C++ : interpreting hex in a char* as uint8_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419602/

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