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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)