All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.djutils.serialization.util.SerialDataDumper Maven / Gradle / Ivy

There is a newer version: 2.2.2
Show newest version
package org.djutils.serialization.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.djutils.decoderdumper.Dumper;
import org.djutils.decoderdumper.FixedString;
import org.djutils.decoderdumper.HexAddressDecoder;
import org.djutils.decoderdumper.HexDecoder;
import org.djutils.serialization.EndianUtil;
import org.djutils.serialization.SerialDataDecoder;

/**
 * Dumper for serialized data.
 * 

* Copyright (c) 2019-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
* BSD-style license. See DJUTILS License. *

* version Jun 27, 2019
* @author Alexander Verbraeck * @author Peter Knoppers */ public class SerialDataDumper extends Dumper { /** * Construct a new SerialDataDumper. * @param endianUtil EndianUtil; used to decode multi-byte values * @param addressOffset int; address of the first byte that will be processed */ public SerialDataDumper(final EndianUtil endianUtil, final int addressOffset) { super(addressOffset); addDecoder(new HexAddressDecoder(16)); addDecoder(new FixedString(": ")); addDecoder(new HexDecoder(16, 8)); addDecoder(new FixedString(" ")); addDecoder(new SerialDataDecoder(endianUtil)); addDecoder(new FixedString("\n")); } /** * Construct a new SerialDataDumper. * @param endianUtil EndianUtil; used to decode multi-byte values */ public SerialDataDumper(final EndianUtil endianUtil) { this(endianUtil, 0); } /** * Create a SerialDataDumper object; use it to dump an array of bytes and return the dump as a String. * @param endianUtil EndianUtil; used to decode multi-byte values * @param addressOffset int; address of the first byte * @param bytes byte[]; the bytes to hex-dump * @return String; the hexadecimal and character dump of the bytes */ public static String serialDataDumper(final EndianUtil endianUtil, final int addressOffset, final byte[] bytes) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { new SerialDataDumper(endianUtil, addressOffset).setOutputStream(baos).append(bytes).flush(); } catch (IOException exception) { // Cannot happen because ByteOutputStream.write(byte[]) cannot fail } return baos.toString(); } /** * Create a SerialDataDumper object with addressOffset 0; use it to dump an array of bytes and return the dump as a String. * @param endianUtil EndianUtil; used to decode multi-byte values * @param bytes byte[]; the bytes to hex-dump * @return String; the hexadecimal and character dump of the bytes */ public static String serialDataDumper(final EndianUtil endianUtil, final byte[] bytes) { return serialDataDumper(endianUtil, 0, bytes); } @Override public String toString() { return "SerialDataDumper [super=" + super.toString() + "]"; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy