将十六进制转储值作为字符串传递

问题描述 投票:2回答:1

我有一个接受十六进制转储值列表的函数,它们作为初始化列表参数传递给该函数并复制到缓冲区中:

void func(void * buff, std::initializer_list<unsigned char> s) {
  memcpy(buff, s.begin(), s.size());
}

我想做的是也将这些值作为字符串传递,例如“ 0x04 0x02 0x01”。两者都可以作为字符串或initializer_list传递给上述函数的参数。我知道我必须创建模板来实现这一目标。到目前为止,这是我尝试过的。我无法实现为模板

void func(void * buff, std::string s) {
    unsigned char arr[s.length() + 1];
    strcpy(arr, s.c_str());
    std::initializer_list<unsigned char> hex_values(arr); 
    memcpy(d, hex_values.begin(), hex_values.size());
  }
c++ templates hex memcpy
1个回答
0
投票
您可以将字符串放入std::istringstream并从中进行格式化输入:

std::istringstream

© www.soinside.com 2019 - 2024. All rights reserved.