首页 > 解决方案 > 将字符串存储为十六进制而不转换

问题描述

我有一个字符串值:

string str = "2018";

现在我必须以unsigned char十六进制表示形式存储在数组中,但不能真正转换为十六进制:

unsigned char    data [2];  //[0x20,0x18]   

如果我这样做

data[0] = 0x20;
data[1] = 0x18;

它有效,但我的输入是string,我该如何解决?

编辑

如果我的输入unsigned char不是string 喜欢

  unsigned char y1 = 20;
  unsigned char y2 = 18;

有没有更好的办法?。

标签: c++hex

解决方案


也许你可以尝试这样的事情:

#include <iostream>

int main()
{
    std::string s = "2018";
    unsigned i;

    std::sscanf(s.c_str(), "%04x", &i);

    unsigned char data[2];
    data[0] = i >> 8;
    data[1] = i;

    std::cout << std::hex << (int)data[0] << " " << (int)data[1] << std::endl;

    return 0;
}

https://ideone.com/SyYKUl

印刷:

20 18

推荐阅读