Как преобразовать двоичный код в число в Dart
Например: [0, 0, 0, 1] обрабатывается как 0001, который является двоичным представлением 1.
Ответы (2 шт):
Автор решения: MiT
→ Ссылка
Можно так (где radix это система счисления):
void main() {
// to decimal
print(int.parse([0, 0, 0, 1].join(), radix: 2));
print(int.parse('0001', radix: 2));
// to binary
print(9.toRadixString(2));
}
Автор решения: Wolf_legend145
→ Ссылка
Традиционный подход состоит в том, чтобы перебирать двоичные цифры и выполнять битовые сдвиги и ORs:
int binaryArrayToNumber(List<int> digits) {
var result = 0;
for (var digit in digits) {
result <<= 1;
result |= digit;
}
return result;
}
Более простой но менее подверженный ошибкам подход подход состоял бы в преобразовании списка цифр в строку и последующем ее разборе:
int binaryArrayToNumber(List<int> digits) =>
int.parse(digits.join(""), radix: 2);