logHexDump function

String logHexDump(
  1. String prefix,
  2. Object? message,
  3. List<int> data, {
  4. int rowSize = 16,
  5. bool showAscii = true,
})

Implementation

String logHexDump(String prefix, Object? message, List<int> data, {int rowSize = 16, bool showAscii = true}) {
  final str = StringBuffer();

  str.writeln(message);
  for (int i = 0; i < data.length; i += rowSize) {
    str.write('0x');
    str.write(i.toRadixString(16).padLeft(6, '0'));
    str.write(': ');

    for (int j = 0; j < rowSize; j++) {
      if (i + j < data.length) {
        str.write(data[i + j].toRadixString(16).padLeft(2, '0'));
        str.write(' ');
      } else
        str.write('   ');
    }

    if (showAscii) {
      str.write(' ');
      for (int j = 0; j < rowSize; j++) {
        if (i + j < data.length) {
          final c = data[i + j];
          if (c > 32 && c < 256)
            str.writeCharCode(c);
          else
            str.write('.');
        }
      }
    }
    str.writeln();
  }

  final dump = str.toString().trimRight();
  logInfo(prefix, dump);
  return dump;
}