Android 输入框中原意字符串,十六进制字符串与字节数组

最近遇到一个需求:一个按钮和一个输入框,在输入框中输入字符串,通过点击按钮,将输入框中的文字在十六进制字符串和原意字符串之间切换。
这时需要字节数组:因为不论是十六进制字符串还是原意字符串,他们的字节数组是相同的。所以我先将原意字符串转换成字节数组,当点击切换的时候,将字节数组转成十六进制字符串。
四个方法:
1。原意字符串转字节数组:string.getBytes()
2。十六进制转字节数组:

public static byte charToByte(char c) {   
        return (byte) "0123456789ABCDEF".indexOf(c);   
    } 
    //Convert hex string to byte[]  
    public static byte[] hexStringToBytes(String hexString) {   
        if (hexString == null || hexString.equals("")) {   
            return null;   
        }   
        String string = hexString.replace(" ", "");
        string = string.toUpperCase();   
        int length = string.length() / 2;   
        char[] hexChars = string.toCharArray();   
        byte[] d = new byte[length];   
        for (int i = 0; i < length; i++) {   
            int pos = i * 2;   
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));   
        }   
        return d;   
    }   

3。字节数组转原意字符串 new String(bytes);
在这遇到一问题:我先用 的是toString方法,但是切换后会不断改变。
原来:一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址!而new String()返回的是当前对象的地址,打印的是字符串。
4。字节数组转十六进制字符串:

public static String bytesToHexString(byte[] src){   
        StringBuilder stringBuilder = new StringBuilder("");   
        if (src == null || src.length <= 0) {   
            return null;   
        }   
        for (int i = 0; i < src.length; i++) {   
            int v = src[i] & 0xFF;   
            String hv = Integer.toHexString(v);   
            if (hv.length() < 2) {   
                stringBuilder.append(0);   
            }   
            stringBuilder.append(hv);   
        }   
        return stringBuilder.toString().toUpperCase();   
    }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值