将字符串变量分配给无符号的char变量

时间:2018-09-03 18:45:36

标签: c++ arrays hex

假设我有一个代表十六进制值的字符串s:

def loadshortlink(request, shortlink):
    print("Translating short link %s" % shortlink)
    link = get_longlink(shortlink)
    return render(request, 'shortlinks/openlong.html', {
        'link': link

    })

我想将s的值分配给v,其中v定义为:

string s="0x80";

最简单的方法是什么?


我为什么需要它?因为在here中,布隆过滤器表示为无符号char的向量,其中每个char表示8位。我想访问每个字符,对其进行一些计算,然后以兼容的形式存储回去。另外,当我打印矢量的每个元素(类型为unsigned char)时,它以十六进制形式出现,例如3a,98等

2 个答案:

答案 0 :(得分:5)

  1. 从字符串中构造一个std::istringstream
  2. 通过指示流包含十​​六进制格式的数据,从istringstream中提取数字。
  3. 将数字分配给char

std::string s="0x80";
std::istringstream str(s);
int num;
str >> std::hex >> num;

unsigned char v = num;

答案 1 :(得分:4)

将字符串转换为整数:

unsigned char num = std::stoi(s, nullptr, 0);