字符串到十六进制char数组

时间:2015-01-11 00:55:56

标签: c++ arrays char hex unsigned

我得到一个字符串,它作为一个函数的参数给出,例如00112233445566778899aabbccddeeff我需要创建一个看起来像这样的unsigned char数组:

unsigned char array[16]= {0x00 ,0x11 ,0x22 ,0x33 ,0x44 ,0x55 ,0x66 ,0x77 ,0x88 ,0x99 ,0xaa ,0xbb ,0xcc ,0xdd ,0xee ,0xff};

我不知道该怎么做,用strcpy尝试了一些东西并考虑了hex,但这只适用于<<或>>据我所知,我不认为我知道如何在这里应用它。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

似乎您需要将接收到的每个数字转换为nibble并将两个半字节组合成一个字节。从数字到半字节的转换可以使用查找或使用数字和字母的条件逻辑来完成。组合是按位移位和按位或。

我可以编写代码,但是我有点超出了作业,更不用说我的版本不太可能是一个可行的解决方案。

答案 1 :(得分:0)

您可以使用istringstream和std :: hex的组合来完成此操作。 example

#include <iostream>
#include <sstream>


int main() {
    std::string myStr = "1122AA010A";

    std::stringstream ss;
    int n;
    for(int i = 0; i<myStr.length(); ) {
        std::istringstream(myStr.substr(i,2))>>std::hex>>n;
        ss<<(char)n;
        i += 2;
        }

    std::string result = ss.str();

    std::cout<<"\n"<<result<<"\n";
    return 0;
    }