正如标题所说,我尝试将 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 !
简而言之,我想这样做: 得到一个包含十六进制数字文本表示形式的字符串,我想将十六进制数字的每个文本表示形式转换为“正常”数字。
最佳答案
如果您确定十六进制数字由空格分隔(如问题所示),那么提取它们就是一个简单的问题。 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);
在上面的代码之后, vector data
将拥有字符串中的所有数据。如果您需要例如通过套接字(或类似的)发送数据,您可以使用 std::vector::data
获取指向数据的原始指针(如果 data
函数不存在,则使用 &data[0]
),并且字节数可从 std::vector::size
获得。 .
关于C++ 字节字符串转换为字节数据类型并计算字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417560/