java字符串和十六进制字符串互转
来源:互联网 发布:我的世界编程游戏 编辑:程序博客网 时间:2024/05/16 10:59
java字符串和十六进制字符串互转
public class HexStringUtils { private static final char[] DIGITS_HEX = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; protected static char[] encodeHex(byte[] data) { int l = data.length; char[] out = new char[l << 1]; for (int i = 0, j = 0; i < l; i++) { out[j++] = DIGITS_HEX[(0xF0 & data[i]) >>> 4]; out[j++] = DIGITS_HEX[0x0F & data[i]]; } return out; } protected static byte[] decodeHex(char[] data) { int len = data.length; if ((len & 0x01) != 0) { throw new RuntimeException("字符个数应该为偶数"); } byte[] out = new byte[len >> 1]; for (int i = 0, j = 0; j < len; i++) { int f = toDigit(data[j], j) << 4; j++; f |= toDigit(data[j], j); j++; out[i] = (byte) (f & 0xFF); } return out; } protected static int toDigit(char ch, int index) { int digit = Character.digit(ch, 16); if (digit == -1) { throw new RuntimeException("Illegal hexadecimal character " + ch + " at index " + index); } return digit; } public static String toHex(String str) { return new String(encodeHex(str.getBytes())); } public static String fromHex(String hex) { return new String(decodeHex(hex.toCharArray())); } public static void main(String[] args) { String s = "abc你好"; String hex = toHex(s); String decode = fromHex(hex); System.out.println("原字符串:" + s); System.out.println("十六进制字符串:" + hex); System.out.println("还原:" + decode); }}
0 0
- java字符串和十六进制字符串互转
- java十六进制字符串和字符串互转(支持中文)
- 十六进制、字符串互转
- PHP 字符串和十六进制互转
- 字符串转十六进制,和Unicode
- Java十六进制字符串转byte和字符转字节
- 字符字符串转十六进制字符串 和 十六进制字符串转字符字符串
- Java 十六进制字符串 HexString
- 十六进制与字符串互转
- 字符串转十六进制 十六进制转字符串
- Java byte数组与十六进制字符串互转
- Java byte数组与十六进制字符串互转
- Java byte数组与十六进制字符串互转
- Java byte数组与十六进制字符串互转
- Java byte数组与十六进制字符串互转
- Java byte数组与十六进制字符串互转
- 十进制字符串转十六进制字符串
- 十进制字符串,转十六进制字符串
- Calendar.getInstance() gives error in Android Studio
- 写点东西
- 数字类型和字符串类型的相互转换
- 关于无向图直径的一些思考
- 51倒计时程序
- java字符串和十六进制字符串互转
- 再看K60——寄存器配置
- HTTP状态码解释
- 关于android:sharedUserId="android.uid.system"这个系统级权限
- Ubuntu Server如何配置SFTP(建立用户监狱)
- iOS 页面切换控制
- Keep Tinking,Find Beauty
- [转]java.lang.instrument 学习(一)
- 80386与8086在寄存器与寻址方式上的区别