c++ - 将 Char 数组转换为 uint8_t vector

标签 c++ vector char type-conversion

对于某些项目,我需要发送编码消息,但我只能给出要发送的 uint8_t vector ,并且我有一个 char 数组(其中包含我转换为十六进制的数字和字符串)和数组上的指针。我将作为对象的 msg 编码到缓冲区中,然后我必须发送它并对其进行解码等。

char buffer[1024]
char *p = buffer
size_t bufferSize = sizeof(buffer)
Encode(msg,p,bufferSize)

std::vector<uint8_t> encodedmsg; //here i need to put my message in the buffer
Send(encodedmsg.data(),encodedmsg.size()) //Only taking uint8_t vector

这是发送的原型(prototype):

uint32_t Send(const uint8_t * buffer, const std::size_t bufferSize)                                                                         

我已经看过一些问题,但没有人必须用 vector 替换它或转换为 uint8_t。 我考虑过 memcpy 或重新解释的类型转换,或者可能使用 for 循环,但我真的不知道如何做到这一点而不会造成任何损失。

谢谢,

最佳答案

实际上您的代码建议 Send()函数接受指向 uint8_t 的指针, 不是 std::vector<uint8_t> . 自 charuint8_t具有与您可以做的相同的内存大小:

Send(reinterpret_cast<uint8_t*>(p), bufferSize);

但是如果你想做每件事都“正确”,你可以这样做:

encodedmsg.resize(bufferSize);
std::transform(p, p + bufferSize, encodedmsg.begin(), [](char v) {return static_cast<uint8_t>(v);});

关于c++ - 将 Char 数组转换为 uint8_t vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001897/

相关文章:

c++ - 在 c/c++ 中通过函数在内存中的地址调用函数

c++ - 初始化所有结构体成员

java - 读取 TXT 文件时 vector 越界

c++ - 如何使用算法来填充 vector 的 vector

c++ - 低功耗处理器的快速搜索-插入-删除算法

java - 如何在不复制对象的情况下将字符串转换为 char[]?

c++ - 从无符号长十六进制转换为 DWORD

c++ - 如何在 IDL 中声明 IN、OPTIONAL 参数以及 OUT、RETVAL 参数

带有 char 数组的 C++ 内存池

c++ - 输入C风格字符串并获取长度