[英]String of Bytes to Byte array 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, 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 的東西?
問題是(byte) tokens[i]
不會將字符串轉換為另一種類型,而是要求編譯器將tokens[i]
的std::string
對象視為byte
,它不是並且可以不會被轉換為。 基本上是你在向編譯器撒謊。 事實上,基本上所有的 C 類型轉換都應該是一個危險信號,表明你做錯了什么。
一種解決方案是使用普通的流提取運算符>>
將每個以空格分隔的十六進制序列解析為無符號整數:
std::vector<unsigned> values;
std::istringstream stream(pattern);
unsigned value;
while (stream >> std::hex >> value)
{
values.push_back(value);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.