在 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);
我不是 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);