Add RandomAccessMemory class for in-memory binary operations
This commit is contained in:
50
dart/lib/debug.dart
Normal file
50
dart/lib/debug.dart
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user