我正在从文件中读取字符串,所以它采用char
数组的形式。我需要标记字符串,并将每个char
数组标记保存为数组中的uint8_t
十六进制值。
char* starting = "001122AABBCC";
// ...
uint8_t[] ending = {0x00,0x11,0x22,0xAA,0xBB,0xCC}
如何从
starting
转换为ending
?谢谢。 最佳答案
这是一个完整的工作程序。它基于Rob I的解决方案,但已修复了一些已通过测试工作的问题。
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <iostream>
const char* starting = "001122AABBCC";
int main()
{
std::string starting_str = starting;
std::vector<unsigned char> ending;
ending.reserve( starting_str.size());
for (int i = 0 ; i < starting_str.length() ; i+=2) {
std::string pair = starting_str.substr( i, 2 );
ending.push_back(::strtol( pair.c_str(), 0, 16 ));
}
for(int i=0; i<ending.size(); ++i) {
printf("0x%X\n", ending[i]);
}
}