我有一个获取连续字节字符串的方法,我需要一个字节数组:
void GetByteArray(string paddedResistance)
{
unsigned char cmd[4]={0x00,0x00,0x00,0x00};
list<string> resistanceBytesAsString;
for (int i = 0; i < paddedResistance.size(); i+=2)
{
resistanceBytesAsString.push_back(paddedResistance.substr(i, 2));
}
}
这是输入值:“00000100”
我将拆分它并将其作为四个单独的字符串添加到列表中:
00 00 01 00
我需要转换它们中的每一个,以便能够填充cmd unsigned char数组,但我无法弄清楚如何做到这一点。
在C#中我会使用
Convert.ToByte(myString, 16);
填充字节数组。
答案 0 :(得分:1)
考虑使用这样的东西:
std::vector<std::string> resistanceBytesAsString{"00","01","10","11"};
std::vector<unsigned char> bytes(resistanceBytesAsString.size());
std::transform(
resistanceBytesAsString.begin(),
resistanceBytesAsString.end(),
bytes.begin(),
[](const std::string& str) {
// Convert the string of length 2 to byte.
// You could also use a stringstream with hex option.
unsigned char byte = (str[0] - '0') << 1 | (str[1] - '0');
return byte;
});