Fra hex til byte
Hep heyjeg har en metode der konvertere et byte[] til en hex streng :
/*
* Converts a byte to hex digit and writes to the supplied buffer
*/
private void byte2hex(byte b, StringBuffer buf) {
char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F' };
int high = ((b & 0xf0) >> 4);
int low = (b & 0x0f);
buf.append(hexChars[high]);
buf.append(hexChars[low]);
}
/*
* Converts a byte array to hex string
*/
private String toHexString(byte[] block) {
StringBuffer buf = new StringBuffer();
int len = block.length;
for (int i = 0; i < len; i++) {
buf.append("0x");
byte2hex(block[i], buf);
if (i < len-1) {
buf.append(":");
}
}
return buf.toString();
}
Det jeg så mangler er nu en metode til at reverse det hele og
får byte[] tilbage.
Mit problem ligger i at hvis jeg f.eks. har en streng der ser sådan her ud :
0xA7:0xCD:0x92:0x04:0xD7:0x9A:0x38:0x7B:0x3C:0xE1:0x97:0x5D:0xC8:0xC3:0xC3:0x45
Så har jeg lavet en funktion :
public byte[] toByteArray(String cryptedString)
{
StringTokenizer st = new StringTokenizer(cryptedString, ":");
ArrayList list = new ArrayList();
while(st.hasMoreTokens())
{
list.add(st.nextToken());
}
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++)
{
result[i] = Byte.decode(list.get(i).toString()).byteValue();
}
return result;
}
java.lang.NumberFormatException: Value out of range. Value:"A7" Radix:16
WHAT TO DO...?
