说我有一个看起来像这样的数组:{'0b00011000','0b10001000'}
如何将数组中的每个元素转换为uint8_t
,并保持其输出为二进制格式。 (例如'0b10001000' == 0b10001000
)。
是否有可以颠覆此功能的功能,或者我必须自行制定功能?
ps.s。我在投射时遇到了“精度丢失”错误,当我绕过该错误时,显然会失去其精度。
编辑:我最终使用位集而不是使用uint8_t
来弄清楚。
我找到了自己的答案:
您可以在cpp中使用'bitsets'并在其中使用string / char *转换
string s = "10011001";
std::bitset<8> binaryNum(string, 0 ,string.size());
binaryNum将保留值10011001,而不是转换为dec或hex。
您可以简单地做
uint8_t out = 0;
for(int i=2; i<10; i++)
if(arr[i])
out += pow(2, i-2);
在性能方面,当然不是最好的,但是如果我理解这个问题,它应该起作用。但是,如果您确实担心性能,则应该研究为什么将char的值存储到由8个字符组成的数组中。