我正在从文件中读取字符串,所以它采用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]);
    }

}

10-06 14:32