【发布时间】:2021-01-03 10:26:36
【问题描述】:
我正在尝试制作采用此模式字符串的函数:
"07 C5 8F E1 FD CA 8C E2 D4 FD BC E5 03 C6 8F E2"
返回这个 BYTE 数组
BYTE pattern[] = { 0x07, 0xC5, 0x8F, 0xE1, 0xFD, 0xCA, 0x8C, 0xE2, 0xD4, 0xFD, 0xBC, 0xE5, 0x03, 0xC6, 0x8F, 0xE2};
我尝试了什么:
BYTE strPatternToByte(std::string pattern, int len)
{
std::vector<std::string> tokens;
std::string token;
std::istringstream tokenStream(pattern);
while(std::getline(tokenStream, token, ' '))
{
tokens.push_back(token);
}
BYTE somePtr[len];
for ( int i=0 ; i < len ; i++)
{
somePtr[i] = '0x' + tokens[i];
}
return somePtr;
}
但是转换为字节模式的行对我不起作用,
somePtr[i] = (byte) tokens[i];
在 c++ 中有没有办法自动将它们解析成字节或类似 java 的东西?
【问题讨论】:
-
源代码中的另一个问题:您正在返回一个指向局部变量的指针,这是未定义的行为。此外,您正在使用 C++ 的非标准扩展 - 可变长度数组。
-
我注意到了,那么您建议返回什么?