簡體   English   中英

如何將十六進制字符串拆分為std :: vector?

[英]How to split a hex string into std::vector?

給定一個十六進制的std::string例如"09e1c5f70a65ac519458e7e53f36" ,我如何將其拆分為兩位數的塊並將其存儲到std::vector<uint8_t>

我以塊大小的步長循環遍歷字符串,但是我不知道如何將十六進制塊轉換為數字。 到目前為止,這就是我所擁有的。

vector<byte> vectorify(string input, int chunk = 2)
{
    vector<uint8_t> result;
    for(size_t i = 0; i < input.length(); i += chunk)
    {
        int hex = input.substr(i, chunk);
        // ...
    }
    return result;
}

這是一個班輪:-)

#include <string>
#include <vector>
#include <boost/algorithm/hex.hpp>

int main(int argc, const char * argv[]) {
    std::string in("09e1c5f70a65ac519458e7e53f36");
    std::vector<uint8_t> out;
    boost::algorithm::unhex(in.begin(), in.end(), std::back_inserter(out));
    return 0;
    }
#include <string>
#include <sstream>
#include <vector>
#include <iomanip>

int main(void)
{
    std::string in("09e1c5f70a65ac519458e7e53f36");
    size_t len = in.length();
    std::vector<uint8_t> out;
    for(size_t i = 0; i < len; i += 2) {
        std::istringstream strm(in.substr(i, 2));
        uint8_t x;
        strm >> std::hex >> x;
        out.push_back(x);
    }
    // "out" contains the solution
    return 0;
}

兩行就夠了

    char str[]="09e1c5f70a65ac519458e7e53f36";
    std::vector<uint8_t> fifth (str, str+ sizeof(str) / sizeof(uint8_t) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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