差異處
這裏顯示兩個版本的差異處。
java:basic:converter [2017/08/19 23:33] |
java:basic:converter [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | {{tag>java}} | ||
+ | ====== Converter ====== | ||
+ | ===== Hex String to byte array ===== | ||
+ | 目的是將0x8086轉為長度為2的byte array,內容為{0x80, 0x86}: | ||
+ | <code java> | ||
+ | static public byte[] parseHextringtoBytes(String hexStr){ | ||
+ | hexStr = hexStr.replaceAll("0[x|X]", ""); | ||
+ | if( hexStr.length() % 2 != 0 ) { | ||
+ | hexStr = "0".concat(hexStr); | ||
+ | } | ||
+ | char[] hexChars = hexStr.toCharArray(); | ||
+ | byte[] b = new byte[hexStr.length() / 2]; | ||
+ | for (int i = 0; i < b.length; i++) { | ||
+ | int index = i * 2; | ||
+ | int v = Integer.parseInt(String.valueOf(Arrays.copyOfRange(hexChars, index, index+2)), 16); | ||
+ | b[i] = (byte) v; | ||
+ | } | ||
+ | return b; | ||
+ | } | ||
+ | </code> | ||
+ | 如果使用BigInteger.toByteArray會因為0x80為負數而多一個byte 0x00。 | ||