Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: flaite am 02.07.08 - 21:34:04

Titel: hex in byte[], byte[] in hex
Beitrag von: flaite am 02.07.08 - 21:34:04
Hi,

das seltsamste, das ich seit langen gemacht hab.
Websphere MQ speichert bestimmte IDs als byte arrays mit 32 Elementen.
Zur Anzeige wollen die das aber als hex-Werte.
Der Wertebereich des primitiven Datentyps byte ist in Java -128 bis 127.
Ein Byte kann also durch 2 Hexadezimalziffern dargestellt werden: 16 * 16.

Nach diesen eigenständigen Überlegungen, hab ich mir den Code per google geholt.

Diese byte -> hex und hex-> byte Operationen scheinen recht gebräuchlich in gewissen Domains zu sein.
Hier ist das Prachtstück:
Code
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.spintegration.mqseries.client.converter;

import java.math.BigInteger;

/**
 *
 * @author ajanssen
 */
public class ByteArrayConverter implements IConverter {

    public String getStrValue(Object obj) {
        if (obj == null) {
            return null;
        }

        byte[] arrByte = (byte[]) obj;
        String ret = "";
        for (int i = 0; i < arrByte.length; i++) {

            char b = (char) (arrByte[i] & 0xFF);
            if (b < 0x10) {
                ret = ret + "0";
            }
            ret = ret + (String) (Integer.toHexString(b)).toUpperCase();
        }

        return ret;

    }

    public Object getObj(String strValue) {
        if (strValue == null) {
            return new byte[]{};
        } else {
            byte[] bts = new BigInteger(strValue, 16).toByteArray();

            return bts;
        }

    }
}