我有一个二进制文件,我正在读取并保存为十六进制值。这些十六进制值将用于闪存设备,但我需要将十六进制值存储为 uint8_t 或 char(最好是 uint8_t)。目前,这些值存储在一个字符串中,一次只存储一个字节。我想要做的是将值存储为 uint8_t 而不是字符串。
因此,如果值为std:string result
is ,我希望0x3A
值为,而不是其他值。uint8_t flash[1]
0x3A
58
如何做到这一点?
任何帮助表示赞赏:)
编辑:
正如我最初预期并已确认的那样,无论我使用哪种方法,这些值都是相同的。对于那些希望查看生成字符串的代码的人,这里是:
unsigned char x;
std::ifstream input(file, std::ios::binary);
input >> std::noskipws;
std::stringstream stream, str;
stream << std::hex << std::setw(2) << std::setfill('0') << (int)x;
std::string result( stream.str() );
str << result;
int value;
str >> std::hex >> value;
uint8_t data = value;