将char *转换为uint8_t

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

说我有一个看起来像这样的数组:{'0b00011000','0b10001000'}如何将数组中的每个元素转换为uint8_t,并保持其输出为二进制格式。 (例如'0b10001000' == 0b10001000)。

是否有可以颠覆此功能的功能,或者我必须自行制定功能?

ps.s。我在投射时遇到了“精度丢失”错误,当我绕过该错误时,显然会失去其精度。

编辑:我最终使用位集而不是使用uint8_t来弄清楚。

c++ arrays char unsigned
2个回答
2
投票

我找到了自己的答案:

您可以在cpp中使用'bitsets'并在其中使用string / char *转换

string s = "10011001";
std::bitset<8> binaryNum(string, 0 ,string.size());

binaryNum将保留值10011001,而不是转换为dec或hex。


1
投票

您可以简单地做

uint8_t out = 0;
for(int i=2; i<10; i++)
    if(arr[i])
        out += pow(2, i-2);

在性能方面,当然不是最好的,但是如果我理解这个问题,它应该起作用。但是,如果您确实担心性能,则应该研究为什么将char的值存储到由8个字符组成的数组中。

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