Превращение чара * в uint8_t - PullRequest
1 голос
/ 12 апреля 2020

Скажем, у меня есть массив, который выглядит следующим образом: {'0b00011000','0b10001000'} Как мне преобразовать каждый элемент в этом массиве в uint8_t, сохраняя его вывод в двоичном формате. (например, '0b10001000' == 0b10001000).

Существуют ли функции, которые могут перевернуть это, или мне придется создать свою собственную функцию?

ps Я получаю ошибку «потеря точности» для приведения, и когда я обхожу это, очевидно, он теряет свою точность.

Редактировать: Я в конечном итоге выяснил, используя наборы битов вместо использования uint8_t.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2020

Я нашел свой собственный ответ:

Вы можете использовать 'битовые наборы' в cpp и приводить строки / символы * внутри них

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

binaryNum будет содержать значение 10011001 вместо преобразование в де c или гекс.

1 голос
/ 12 апреля 2020

Вы могли бы просто сделать

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

Конечно, не самое лучшее с точки зрения производительности, но если я понимаю вопрос, это должно работать. Но если вы беспокоитесь о производительности, вы должны выяснить, почему вы храните значение char в массиве из 8 *.

...