当前位置: 代码迷 >> J2SE >> java 16进制字符串 转换成0x00 0x00 .解决方法
  详细解决方案

java 16进制字符串 转换成0x00 0x00 .解决方法

热度:598   发布时间:2016-04-24 02:12:26.0
java 16进制字符串 转换成0x00 0x00 ....
16进制字符串:
00000018A0010098C68E00989A690000000000BC614E000055AA55AA

如何将上述16进制字符串转换成如下:
0x00 0x00 ...
HeapBuffer[pos=0 lim=28 cap=2048: 00 00 00 18 A0 01 00 98 C6 8E 00 98 9A 69 00 00...]

说明是要写入IoBuffer缓冲区。

求解决,在线等。。。。

------解决方案--------------------
Java code
public class T {    public static void main(String[] args) {        String s = "00000018A0010098C68E00989A690000000000BC614E000055AA55AA";        System.out.println(s);        byte[] b = HexString2Bytes(s);        System.out.println(Bytes2HexString(b));    }    /**     * 将指定byte数组以16进制的形式打印到控制台     *      * @param hint     *            String     * @param b     *            byte[]     * @return void     */    public static void printHexString(String hint, byte[] b) {        System.out.print(hint);        for (int i = 0; i < b.length; i++) {            String hex = Integer.toHexString(b[i] & 0xFF);            if (hex.length() == 1) {                hex = '0' + hex;            }            System.out.print(hex.toUpperCase() + " ");        }        System.out.println("");    }    /**     *      * @param b     *            byte[]     * @return String     */    public static String Bytes2HexString(byte[] b) {        String ret = "";        for (int i = 0; i < b.length; i++) {            String hex = Integer.toHexString(b[i] & 0xFF);            if (hex.length() == 1) {                hex = '0' + hex;            }            ret += " 0x" + hex.toUpperCase();        }        return ret;    }    /**     * 将两个ASCII字符合成一个字节; 如:"EF"–> 0xEF     *      * @param src0     *            byte     * @param src1     *            byte     * @return byte     */    public static byte uniteBytes(byte src0, byte src1) {        byte _b0 = Byte.decode("0x" + new String(new byte[] {src0})).byteValue();        _b0 = (byte) (_b0 << 4);        byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 })).byteValue();        byte ret = (byte) (_b0 ^ _b1);        return ret;    }    /**     * 将指定字符串src,以每两个字符分割转换为16进制形式 如:"2B44EFD9" –> byte[]{0x2B, 0×44, 0xEF,     * 0xD9}     *      * @param src     *            String     * @return byte[]     */    public static byte[] HexString2Bytes(String src) {        if (null == src || 0 == src.length()) {            return null;        }        byte[] ret = new byte[src.length() / 2];        byte[] tmp = src.getBytes();        for (int i = 0; i < (tmp.length / 2); i++) {            ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);        }        return ret;    }}
  相关解决方案