diff --git a/src/zutil/ByteUtil.java b/src/zutil/ByteUtil.java index b5f4334..a16503f 100755 --- a/src/zutil/ByteUtil.java +++ b/src/zutil/ByteUtil.java @@ -144,7 +144,7 @@ public class ByteUtil { byte rest = 0; for (int i=0; i>>= shiftBy; + data[i] = (byte)((int)(data[i]&0xFF) >> shiftBy); if(i != 0) data[i-1] |= rest; } diff --git a/src/zutil/converter/Converter.java b/src/zutil/converter/Converter.java index bb6ce98..74f4d6b 100755 --- a/src/zutil/converter/Converter.java +++ b/src/zutil/converter/Converter.java @@ -101,11 +101,11 @@ public class Converter { if(hex.startsWith("0x")) hex = hex.substring(2); byte[] b = new byte[(int)Math.ceil(hex.length()/2.0)]; - for(int i=hex.length()-1; i>=0; i-=2){ - if(i-1 < 0) - b[(hex.length()-i-1)/2] = hexToByte(hex.charAt(i)); + for(int i=0; i= hex.length()) + b[(i+1)/2] = hexToByte(hex.charAt(i), '0'); else - b[(hex.length()-i-1)/2] = hexToByte(hex.charAt(i-1), hex.charAt(i)); + b[(i+1)/2] = hexToByte(hex.charAt(i), hex.charAt(i+1)); } return b; } diff --git a/test/zutil/ByteUtilTest.java b/test/zutil/ByteUtilTest.java index bf3d516..d2413ae 100755 --- a/test/zutil/ByteUtilTest.java +++ b/test/zutil/ByteUtilTest.java @@ -109,6 +109,8 @@ public class ByteUtilTest { ByteUtil.shiftLeft(new byte[]{0b0000_0001}, 0)); assertArrayEquals( new byte[]{0b0000_0001}, ByteUtil.shiftLeft(new byte[]{0b0001_0000}, 4)); + assertArrayEquals( new byte[]{0b0000_1000}, + ByteUtil.shiftLeft(new byte[]{(byte)0b1000_0000}, 4)); assertArrayEquals( new byte[]{0b0001_0001, 0b0000_0000}, ByteUtil.shiftLeft(new byte[]{0b0001_0000, 0b0000_0001}, 4)); assertArrayEquals( new byte[]{0b0100_1001, 0b0000_0001}, diff --git a/test/zutil/converter/ConverterTest.java b/test/zutil/converter/ConverterTest.java index 5d25d2f..c5a4c7b 100755 --- a/test/zutil/converter/ConverterTest.java +++ b/test/zutil/converter/ConverterTest.java @@ -57,9 +57,9 @@ public class ConverterTest { assertArrayEquals( new byte[]{}, Converter.hexToByte("") ); assertArrayEquals( new byte[]{0x00}, Converter.hexToByte("0x00") ); assertArrayEquals( new byte[]{0x00}, Converter.hexToByte("00") ); - assertArrayEquals(new byte[]{0x07,0x06,0x05,0x04,0x03,0x02,0x01}, + assertArrayEquals(new byte[]{0x01,0x02,0x03,0x04,0x05,0x06,0x07}, Converter.hexToByte("01020304050607") ); - assertArrayEquals( new byte[]{0x11,0x0F}, Converter.hexToByte("F11") ); + assertArrayEquals( new byte[]{(byte)0xF1,0x10}, Converter.hexToByte("F11") ); } @Test