-1

正如标题所说,我尝试将 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 !

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

4

1 回答 1

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]data函数不存在时使用),并且字节数可从std::vector::size.

于 2013-01-19T19:33:55.757 回答