在 dart 中将字节转换为位,反之亦然

Convert bytes to bits in dart, and vice versa

我不是 Dart 方面的专家,尤其是字节操作方面的专家。 我使用 flutter_blue 并接收或发送 int 列表,如 [211、13、67]。 我读了 enter link description here 这对我来说并不直观,但成功地将这些数据转换为字符串或数字, 但在某些情况下,我需要将一个字节转换为其等效的 8 位 int,反之亦然。 例如:0100000 -> 0x....,或 [165] -> 01111111

你能帮帮我吗? 谢谢

这样的东西能胜任吗?

void main() {
  final list = [211, 13, 67];

  for (final number in list) {
    print('${intTo8bitString(number)} = $number');
  }
  // 11010011 = 211
  // 00001101 = 13
  // 01000011 = 67

  for (final number in list) {
    print('${intTo8bitString(number, prefix: true)} = $number');
  }
  // 0x11010011 = 211
  // 0x00001101 = 13
  // 0x01000011 = 67

  print(binaryStringToInt('0x11010011')); // 211
  print(binaryStringToInt('1101')); // 13
  print(binaryStringToInt('01000011')); // 67
}

String intTo8bitString(int number, {bool prefix = false}) => prefix
    ? '0x${number.toRadixString(2).padLeft(8, '0')}'
    : '${number.toRadixString(2).padLeft(8, '0')}';

final _pattern = RegExp(r'(?:0x)?(\d+)');

int binaryStringToInt(String binaryString) =>
    int.parse(_pattern.firstMatch(binaryString)!.group(1)!, radix: 2);