簡體   English   中英

字節字符串到字節數組 C++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM