十六进制字符串与中文互转

十六进制字符串与中文互转

前言:有时候在做数据分析的时候会遇到一些二进制数据文件或者在进行tcp/udp通信的时候经常需要把数据转化成字节数据,其中包含了中文数据,但网上查找半天不知道怎么去解析这些数据变成我们想要的,所以在这里就记录下一些常用的方法。

目录

十六进制字符串与中文互转

一、Java实现方法

(1)字符串转16进制字符串

(2)字符串转字节数组

(3)字节数组转16进制字符串

(4)字节数组转字符串

(5)16进制字符串转字节数组

(6)16进制字符串转字符串

(7)整数转字节数组

(8)整数转16进制字符串

(9)字节数组转整数

(10)十六进制字符串转整数

二、python实现方法


实现语言:Java、Python

一、Java实现方法

首先是常用的编码列表,下面的有些方法的参数会用到。(ps:有些方法描述不恰当,结果一般是正确的)

序号 编码名称 说明
1 US-ASCII 7 位 ASCII 字符,也叫作 ISO646-US、Unicode 字符集的基本拉丁块
2 ISO-8859-1 ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1
3 UTF-8 8 位 UCS 转换格式
4 UTF-16BE 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序
5 UTF-16LE 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序
6 UTF-16 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识

(1)字符串转16进制字符串

    /**
     * 字符串转16进制字符串
     * @param str 普通字符串
     * @param charsetName 编码名称
     * @return 16进制字符串
     */
    public static String StringToHexStr(String str,String charsetName){
        try {
            byte[] conver=str.getBytes(charsetName);
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<conver.length;i++) {
                sb.append(String.format("%02x",conver[i]));
            }
            return sb.toString();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }

说明:该方法比较常用。

调用例子:HexDataUtils.StringToHexStr("中文abc123", "UTF-16LE")

结果:2d4e8765610062006300310032003300

(2)字符串转字节数组

    /**
     * 字符串转字节数组
     * @param str 普通字符串
     * @param charsetName 编码名称
     * @return 字节数组
     */
    public static byte[] StringToByteArray(String str,String charsetName){
        try {
            return str.getBytes(charsetName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }

调用例子:HexDataUtils.StringToByteArray("中文abc123", "UTF-16LE")

结果:[B@282ba1e

结果(Arrays.toString() 执行后):[45, 78, -121, 101, 97, 0, 98, 0, 99, 0, 49, 0, 50, 0, 51, 0]

(3)字节数组转16进制字符串

    /**
     * 字节数组转16进制字符串
     * @param b 字节数组
     * @return 十六进制字符串
     */
 
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值