import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; public class TestToHex { //switch0:bfaab9d8c1bfb1a8beaf private static String hexString = "0123456789ABCDEF"; public static void main(String[] args) throws UnsupportedEncodingException { System.out.println(encode(new String("开关量报警".getBytes("gb2312"),"gb2312"))); System.out.println(decode("BFAAB9D8C1BFB1A8BEAF")); } /* * 将字符串编码成16进制数字,适用于所有字符(包括中文) */ public static String encode(String str) throws UnsupportedEncodingException { // 根据默认编码获取字节数组 byte[] bytes = str.getBytes("gb2312"); StringBuilder sb = new StringBuilder(bytes.length * 2); // 将字节数组中每个字节拆解成2位16进制整数 for (int i = 0; i < bytes.length; i++) { sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4)); sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0)); } return sb.toString(); } /* * 将16进制数字解码成字符串,适用于所有字符(包括中文) */ public static String decode(String bytes) throws UnsupportedEncodingException { ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2); // 将每2位16进制整数组装成一个字节 for (int i = 0; i < bytes.length(); i += 2) baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString .indexOf(bytes.charAt(i + 1)))); return new String (new String(baos.toByteArray(),"gb2312").getBytes("utf-8"),"utf-8"); } /* * 将16进制的字符串装换为对应的byte数组,例如"A5000C5A81000000000000000000010E90AA" 转换为对应的数组形式 * * @param hexString * @return 转换后的数组 */ public byte[] hexStringToBytes(String hexString) { if (StringUtils.isEmpty(hexString)) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.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; } private byte charToByte(char c) { return (byte) "0123456789ABCDEF".indexOf(c); } }
相关推荐
16进制与字符串、字节数组之间的转换 16进制与字符串、字节数组之间的转换
此工具用于将16进制字符串转换成10进制byte数组
java工具类 : string转10进制sacii byte数组、 10进制sacii byte数组转16进制字符数组、 16进制字符数组转16进制byte数组、 string与BCD互转等方法,包含多个转换方法, 足够满足日常解包组包需求
android byte字节数组转换十六进制字符串一个demo。里面有几种转换测试代码。我的博客地址:http://blog.csdn.net/qq_16064871。
NULL 博文链接:https://hw1287789687.iteye.com/blog/1882644
labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习
C# string byte数组转换解析 C# string byte数组转换实现的过程是什么呢?C# string byte数组间的转换需要...byte[] 转成原16进制格式的string,例如0xae00cf, 转换成 "ae00cf";new byte[]{ 0x30, 0x31}转成"3031":
输入string 输出byte 16进制下的转换
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
字符串之间的转化通用,字节数组转化为十六进制字符串,16进制转化为byte数组,十六进制字符串转字符串,将一条十六进制字符串转换为ASCII
|PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * * | | * *如果你将这个程序放在你的网站上,我希望你能同时加上本站的链接 | | * | * | * *老字符串转数组...
16进制与ASCII互转程序和代码,比较简单代码网上的太复杂
NULL 博文链接:https://duanfei.iteye.com/blog/1883475
Java-byte数组转换成16进制字符串
最近由于工作上的需要,遇到进制转换的问题。涉及到的进制主要是 十进制,十六进制,二进制中间的转换。还包括了一个字节数组 与十六进制字符串的互相转换。估计遇到蓝牙通信的朋友,应该用的上。
该代码可以实现单精度浮点数和16进制字符之间的转换,包含源代码
java socket处理硬件传过来的16进制数据的工具类,包含大小端转换、byte[]数组转换为16进制的字符串、byte[]转ByteBuffer、16进制字符串转换为byte数组等
项目中用到蓝牙打印机,但是蓝牙打印机只支持gbk编码,而小程序用的是Unicode,此资源解决了Unicode转gbk编码问题
可以获取textEdit上的QString类型16进制数转换为ByteArray; 输入数据错误判断及提示; CRC16校验计算公式; 计算ByteArray的crc16结果; 结果转换为QString,并且每两位数据都需要增加空格展示; 输入清除功能; ...