C++ 字节字符串转换为字节数据类型并计算字节数

标签 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 !

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

最佳答案

如果您确定十六进制数字由空格分隔(如问题所示),那么提取它们就是一个简单的问题。 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/

相关文章:

c++ - 无法洗牌我的卡片阵列 C++

c - 对结构 C 中的数据使用 GSL 库函数

c - 当我有 main1、main2 和 main 时,如何执行 main1?

c - 有没有办法一次性释放链表中的所有节点,而不是遍历每个节点?

c++ - 从字符串中取出整数 C++

java - 繁体和简体中文不被分开拾取

c++ - 窗口的 C\C++ LINPACK 源代码免费用于商业用途?

c++ - 辛是如何工作的?

c++ - 如何为 Win32 构建谷歌的 C++ libphonenumber 库

swift - 在 "if"语句中使用字符串进行比较不起作用 (SWIFT)