gpt4 book ai didi

c++ - 如何将整数 vector 转换为 2 位十六进制数并按顺序添加到 c 字符串?

转载 作者:行者123 更新时间:2023-11-30 04:49:33 25 4
gpt4 key购买 nike

<分区>

我想将一个 uint8_t vector 接受到一个函数中,然后将每个元素转换为 2 位数字(所有未使用的数字均为 0)写入十六进制存储在一个字符串中。我想我在这里可能会感到困惑......

我想出了一种使用 printf 的方法(我认为):

std::vector<uint8_t> name1 = { 's', '2', '9', '2', 'a', 'b' };

for (int i = 0; i < name1.size(); i++) {
printf("printf: %002X ", name1[i]);
std::cout << std::endl;
}

但后来的想法是我创建一个字符串,例如:

MSGPACK 733239326162

其中 73 是 s,32 显然是 2 等等......

所以我想将上面的 MSGPACK...162 放入一个存储它的变量中,然后再执行类似 printf(msgpack1) 的操作。

我试过下面的方法...

char buffer[40];

std::vector<uint8_t> name1 = { 's', '2', '9', '2', 'a', 'b' };

for (int i = 0; i < name1.size(); i++) {
snprintf(buffer, sizeof(buffer), "%002X", name1[i]);
}

buffer[name1.size()] = '\0';

所以我希望我可以像这样打印出来:

printf("MSGPACK %s", buffer);

我不确定我在这里做错了什么,但我得到的是 MSGPACK 62 作为输出。如何获得我需要的东西?

编辑:我看到缓冲区现在被 vector 的最后一个成员覆盖了,但我不能只将 buffer[i] 放入 snprintf,所以什么会是解决问题的方法吗?

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