Имеется массив:
byte customChar[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
В одной из функций я собираю строку вида "10101"
. Есть ли функция или способ для преобразования этой строки к виду B10101
для добавления как элемент к массиву customChar
?
Чтобы преобразовать число, заданное строкой, в конкретное числовое значение можно использовать функции типа std::stoi
или std::strtol
, где дополнительно нужно указать систему счисления, в текущем случае, это 2
. Первая функция требует наличия поддержки стандарта C++11, вторая будет работать и без оного:
#include <cstdlib>
byte value = static_cast<byte>(std::strtol("10001", NULL, 2));
После преобразования можно записать значение в требуемую ячейку массива:
customChar[index] = value;
typedef unsigned char bin_t;
void binToString(bin_t number, char *result)
{
result[0] = 'B';
for( bin_t n = sizeof(bin_t); n > 0; --n) {
result[sizeof(bin_t) - n + 1] = (number & (1 << (n - 1))) ? '1' : '0';
}
result[sizeof(bin_t) + 1] = 0;
}
...
char str[sizeof(bin_t)+2];
bin_t number = 0b0101001;
binToString(number, str);
std::cout << str;
Виртуальный выделенный сервер (VDS) становится отличным выбором
как считать Экспоненициальную запись числа с файла ? ( подробнее желательно ) И в каком виде оно должно быть записано в файле?
Собсна, стоит задача: оформить функцию bool parseUrl(const string & url, Protocol & protocol, const unsigned int & port, const string & host, const string & document), которыая будет определять...
Вот сам код, ошибка в строке 9
Почему следующая программа выводит 1 0, хотя вроде бы одинаковые проверки?