如何解决字节字符串到字节数组C ++
我正在尝试制作采用此模式字符串的函数:
"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,0xBC,0xE5,0x03,0xC6,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的内容?
解决方法
问题在于(byte) tokens[i]
不会将字符串转换为另一种类型,而是要求编译器将std::string
中的tokens[i]
对象视为byte
,它不是,也不能转换为。基本上,这是对编译器撒谎。实际上,基本上所有的C型转换都应该是一个危险信号,表示您做错了事。
一种解决方案是改为使用常规流提取运算符>>
将每个以空格分隔的十六进制序列解析为无符号整数:
std::vector<unsigned> values;
std::istringstream stream(pattern);
unsigned value;
while (stream >> std::hex >> value)
{
values.push_back(value);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。