byte[] 转Hex String

一、一个字符串转byte数组怎么转?

byte[] byteArray = String.getBytes();

二、又想把生成的数组转回字符串怎么办?

String covertString = new String(byteArray);

以上的轻松愉快仅限于字符串之间互转(适当的时候还要注意编码格式)。

三、如果一个的数值byte[]数组怎么转成字符串?例如:

byte[] byteArray = new byte[]{-60,60};

如果用new String(byteArray)直接转,会丢失负数信息(毕竟char的取值范围和byte的取值范围不一样)。

所以一个较好的策略是把byte信息转成16进制的字符串,方便再从16进制字符串转回byte数组。

3.1 byte[]转成Hex String

public static String byteArrayToHexStr(byte[] byteArray) {
    if (byteArray == null) {
        return null;
    }
    char[] hexArray = "0123456789ABCDEF".toCharArray();
    char[] hexChars = new char[byteArray.length * 2];
    for (int j = 0; j < byteArray.length; j++) {
        int v = byteArray[j] & 0xFF;
        hexChars[j * 2] = hexArray[v >>> 4];
        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    }
    return new String(hexChars);
}

3.2 Hex String转成byte[]

public static byte[] hexStrToByteArray(String str) {
    if (str == null) {
        return null;
    }
    if (str.length() == 0) {
        return new byte[0];
    }
    byte[] byteArray = new byte[str.length() / 2];
    for (int i = 0; i < byteArray.length; i++) {
        String subStr = str.substring(2 * i, 2 * i + 2);
        byteArray[i] = ((byte) Integer.parseInt(subStr, 16));
    }
    return byteArray;
}                

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值