C ++ Bytes字符串转换为字节数据类型和计数字节

时间:2013-01-19 18:43:50

标签: c++ c string types byte

正如标题所示,我尝试将字节数据转换为字节的C ++字符串并计算字节数。 我从文本框中获取的字符串将包含一系列一个字节的十六进制数字,但我需要将其作为字节发送。

char packet_data[200];
HWND hTextBox2 = GetDlgItem(TabOneDlg,IDC_EDIT3);

SendMessageA(hTextBox2, WM_GETTEXT, (WPARAM)200, (LPARAM)packet_data);

这就是我获取输入值的方式(我使用的是win32 API - 非托管表单)

输入字符串(十六进制)的示例

AA BB CC DD - 4 bytes !

简而言之我想这样做: 有一个包含十六进制数字的文本表示的字符串,我想将十六进制数字的每个文本表示转换为“正常”数字。

1 个答案:

答案 0 :(得分:2)

如果您确定十六进制数字由空格分隔(如问题所示),则提取它们是一个简单的问题。 C ++中最简单的方法是使用std::istringstream和普通输入运算符>>

std::istringstream istr(packet_data);
std::vector<uint8_t> data;

uint8_t i;
while (istr >> std::hex >> i)
    data.push_back(i);

在上面的代码之后,向量data将包含字符串中的所有数据。如果您需要,例如通过套接字(或类似)发送数据,您可以使用std::vector::data获取指向数据的原始指针(如果&data[0]函数不存在,则使用datastd::vector::size可以获得字节数。