我有以下结构定义从 HID 设备报告集合返回的数据:
struct DevInfo {
char unknown[0x40];
string name;
char unknown2[0x240];
};
它目前不完整,但这与我的问题无关。以前,我正在填充此结构的一个实例,memcpy
用于从 char 数组中复制数据,如下所示:
// get data from HID device
unsigned char *response = sendCommand(DEV_REPORT);
// Copy to struct
DevInfo *info;
memcpy(&info, &response[0], sizeof(response));
// Output name
cout << "Name: " << info->name << "\n";
这行得通,除了我显然做了一些我不应该做的事情(从函数返回对 char 数组的引用)。所以,经过研究,我改用了一种更安全的std::vector<unsigned char>
方法,但现在我不能用它memcpy
来填充结构中的数据。
有人建议我使用std::vector<DevInfo>
而不是std::vector<unsigned char>
,但问题是可以从 HID 设备检索到几种不同的报告,因此我需要能够使用相同的函数 ( sendCommand
) 填充不同的结构。
将二进制数据从我的结构获取std::vector<unsigned char>
到我的DevInfo
结构的合适方法是什么?