Files
SweepStore/dart/lib/debug.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();
}