50 lines
1.2 KiB
Dart
50 lines
1.2 KiB
Dart
|
|
import 'dart:typed_data';
|
|
|
|
String binaryDump(Uint8List data) {
|
|
StringBuffer buffer = StringBuffer();
|
|
|
|
for (int i = 0; i < data.length; i += 16) {
|
|
// Address
|
|
buffer.write('0x${i.toRadixString(16).padLeft(4, '0').toUpperCase()} (${i.toString().padLeft(4)}) | ');
|
|
|
|
// Hex bytes
|
|
for (int j = 0; j < 16; j++) {
|
|
if (i + j < data.length) {
|
|
buffer.write('${data[i + j].toRadixString(16).padLeft(2, '0').toUpperCase()} ');
|
|
} else {
|
|
buffer.write(' ');
|
|
}
|
|
}
|
|
|
|
buffer.write(' | ');
|
|
|
|
// Integer representation
|
|
for (int j = 0; j < 16; j++) {
|
|
if (i + j < data.length) {
|
|
buffer.write('${data[i + j].toString().padLeft(3)} ');
|
|
} else {
|
|
buffer.write(' ');
|
|
}
|
|
}
|
|
|
|
buffer.write(' | ');
|
|
|
|
// ASCII representation
|
|
for (int j = 0; j < 16; j++) {
|
|
if (i + j < data.length) {
|
|
int byte = data[i + j];
|
|
if (byte >= 32 && byte <= 126) {
|
|
buffer.write(String.fromCharCode(byte));
|
|
} else {
|
|
buffer.write('.');
|
|
}
|
|
}
|
|
}
|
|
|
|
buffer.write(' | ');
|
|
if (i + 16 < data.length) buffer.writeln();
|
|
}
|
|
|
|
return buffer.toString();
|
|
} |