我正在尝试将字符串转换为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
答案 0 :(得分:1)
std::cout << c << std::endl;
正在将std::uint8_t
作为字符写入(请参阅this question for details)。
您必须将其转换为整数才能真正获得所需的结果。
例如(wandbox link):
std::cout << static_cast<int>(c) << std::endl;