Első változat, egyelőre ellátja a feladatát:
public static void logBytes(Logger logger, byte[] bytes) {
if (!logger.isLoggable(Level.FINE))
return;
int offset = 0;
while (offset < bytes.length) {
StringBuilder builder = new StringBuilder();
builder.append(String.format("data line 0x%04x: ", offset));
for (int i = 0; i != 16; ++i) {
if (offset + i < bytes.length)
builder.append(String.format("%02x ", bytes[offset + i]));
else
builder.append(" ");
}
builder.append(" ");
for (int i = 0; i != 16; ++i) {
int idx = offset + i;
if (idx < bytes.length) {
if (bytes[idx] >= 32 && bytes[idx] <= 126)
builder.append(String.format("%c", bytes[idx]));
else
builder.append(".");
}
}
logger.fine(builder::toString);
offset += 16;
}
}
- Panther blogja
- A hozzászóláshoz be kell jelentkezni
- 197 megtekintés
Hozzászólások
Nincs is jobb mint hexa dump alapján hibát keresni! Talán csak amikor elő kell venni az oszcilloszkópot is. De azt már pláne nehéz Java-val összefüggésbe hozni.
- A hozzászóláshoz be kell jelentkezni
Színes vászon, színes vászon, fúj!
Kérem a Fiátot..
- A hozzászóláshoz be kell jelentkezni
Valóban, de tapasztalat, hogy sokszor a hexa dump kifejezetten jól olvasható, ha nem titkosított adat van benne, még bináris protokollok esetén is (RDP, SSH, ...).
Ha erre szükség van, akkor a kevésbé beszédes log túl kevés, esetleg csak a hexdumpból látszódik, hogy benne van a hiba oka is.
- A hozzászóláshoz be kell jelentkezni