字符串到ascii十六进制/整数值

时间:2019-04-30 22:57:09

标签: c++

我正在尝试将字符串转换为ASCII值uint8_t的向量

例如,如果我有一个"500"的字符串,我想要一个{53, 48, 48}的向量,其中这些值为十六进制0x35、0x30、0x30。这是我目前正在做的,而且没有用

#include <iostream>
#include <string>
#include <vector>
int main() {
    std::string number = "500";
    std::vector<std::uint8_t> bytes;
    for (auto& c : number)
        bytes.push_back(static_cast<std::uint8_t>(c));

    for (auto& c : bytes)
        std::cout << c << std::endl;
    return 0;
}

但是我得到的输出是5、0、0,而我原本的期望是53、48、48

1 个答案:

答案 0 :(得分:1)

std::cout << c << std::endl;正在将std::uint8_t作为字符写入(请参阅this question for details)。 您必须将其转换为整数才能真正获得所需的结果。

例如(wandbox link):

std::cout << static_cast<int>(c) << std::endl;