【发布时间】:2020-11-04 05:56:10
【问题描述】:
BYTE* uMemory;
std::string data = "00 00 00 2D 01 00 B0 F9 1E 00"
data.erase(remove_if(data.begin(), data.end(), isspace), data.end());
int address = 0;
for (int i = 0; i < data.length(); i += 2)
{
std::string data_1 = data.substr(i, 2);
int num2 = std::stoi(data_1, 0, 16);
memcpy(&uMemory + address, &num2, 2);
address++;
}
我正在尝试将其复制到内存中 (2E 01 00 00 00 2D 01 00 B0 F9 1E 00) 用于 uMemory,但我不明白它的逻辑。
无论我希望它复制多少字节,它在内存中总是这样结束:
00 00 00 00 00 00 00 00 00 01 00 00 2D 00 00 00 01 00 00 00 00 00 00 00 B0 00 00 00 F9 00 00 00 1E 00 00 00
【问题讨论】:
-
因为
uMemory未初始化。这是故意的吗?还有&uMemory是局部变量uMemory的地址。 -
这里不需要
memcpy(),uMemory[address++] = num2;应该可以工作,但是你需要正确初始化uMmemory。 -
这是一个相当,嗯,低效的解码十六进制数据的方法。
-
uMemory[address++] = num2;最初可以工作,但后来它在内存中变得混乱。如何正确初始化它..因为我尝试的所有内容都阻止了正确的值被复制。
-
之所以这样,是因为字符串取自用户输入,因此并不总是“00 00 00 2D 01 00 B0 F9 1E 00”