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:
/*
* 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;
}
}
}