c++ - 将字符串转换为字节(无符号字符)数组 cpp

标签 c++ hex

在这个简单的问题上遇到了真正的麻烦。 我有一个这样的字符串:

std::string msg = "00 00 00 00 00 06 01 05 00 FF 00 00";

我想:

unsigned char bbuffer[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x05, 0x00, 0xFF, 0x00, 0x00 };

有什么方法呢?

最佳答案

如果可能的话,我建议使用 std::vector<unsigned char>而不是实际的数组。

使用它,我想我会做这样的事情:

std::istringstream buffer(msg);

std::vector<unsigned char> bbuffer;

unsigned int ch;
while (buffer >> std::hex >> ch)
    bbuffer.push_back(ch);

如果你真的坚持数组,你可以这样做:

std::istringstream buffer(msg);

char bbuffer[12];

unsigned int ch;
for (int i=0; buffer >> std::hex >> ch; i++)
    bbuffer[i] = ch & 0xff;

但 vector 通常更可取。

关于c++ - 将字符串转换为字节(无符号字符)数组 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626749/

相关文章:

c++ - 无法迭代其元素包含 unique_ptr 的 map

c++ - boost::locale icu sortKey

c - c 编写的服务器显示 bmp 图像的问题

compiler-construction - Microchip PIC C18 编程文件格式 .COFF 与 .HEX

C:读取以 ASCII 编写的十六进制

php - MySQL 和 BLOB 字段无法从 PHP 上传/显示图像(但它可以手动工作)/二进制/十六进制转储?

c++ - 如何初始化和打印 std::wstring?

C++ 模板集合类型

c++ - MinGW g++ 生成(据称)16 位二进制

assembly - 将非常简单的 ARM 指令转换为二进制/十六进制