将 char* 变成 uint8_t

Turning a char* into an uint8_t

假设我有一个如下所示的数组:{'0b00011000','0b10001000'} 我如何将该数组中的每个元素转换为 uint8_t 以二进制格式保持其输出。 (例如 '0b10001000' == 0b10001000)。

是否有函数可以翻转这个,还是我必须自己制作函数?

p.s。我在转换时遇到 'precision lost' 错误,当我绕过它时,它显然失去了精度。

编辑: 我确实最终弄清楚了使用位集而不是使用 uint8_t

你可以简单地做

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

在性能方面当然不是最好的,但如果我理解这个问题,它应该可以工作。但是,如果您担心性能,您当然应该研究为什么要将一个 char 的值存储到一个包含 8 个字符的数组中。

我找到了自己的答案:

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

string s = "10011001";
std::bitset<8> binaryNum(string);

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