差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 下次修改 Both sides next revision | ||
java:basic:converter [2016/11/22 11:19] tony 移除 |
java:basic:converter [2016/11/22 13:30] tony [Hex String to byte array] |
||
---|---|---|---|
行 2: | 行 2: | ||
====== Converter ====== | ====== Converter ====== | ||
===== Hex String to byte array ===== | ===== Hex String to byte array ===== | ||
+ | 目的是將0x8086轉為長度為2的byte array,內容為{0x80, 0x86}: | ||
<code java> | <code java> | ||
- | private byte[] toBytes(String hexStr){ | + | static public byte[] parseHextringtoBytes(String hexStr){ |
- | hexStr = hexStr.replaceAll("0[x|X]", ""); | + | hexStr = hexStr.replaceAll("0[x|X]", ""); |
- | return new BigInteger(hexStr, 16).toByteArray(); | + | 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> | </code> | ||
- | |||
- | |||