汉字转16进制方法

package com.chen.util;

import java.io.UnsupportedEncodingException;

public class Util {
	
	

public static void main(String args[]){
	String gbk16 = convertStringToUTF8("今天天气真好","UTF-8");
	System.out.println( gbk16);
	System.out.println(convertUTF8ToString(gbk16,"UTF-8"));
//	BDF1CCECCCECC6F8D5E6BAC3
}



	/**
	 * UTF-8编码 转换为对应的 汉字
	 * 
	 * URLEncoder.encode("上海", "UTF-8") ---> %E4%B8%8A%E6%B5%B7
	 * URLDecoder.decode("%E4%B8%8A%E6%B5%B7", "UTF-8") --> 上 海
	 * 
	 * convertUTF8ToString("E4B88AE6B5B7")
	 * E4B88AE6B5B7 --> 上海
	 * 
	 * @param s 		字符串
	 * @param Encoder	编码格式
	 * @return
	 */
	public static String convertUTF8ToString(String s,String Encoder) {
		if (s == null || s.equals("")) {
			return null;
		}
		
		try {
			s = s.toUpperCase();

			int total = s.length() / 2;
			int pos = 0;

			byte[] buffer = new byte[total];
			for (int i = 0; i < total; i++) {

				int start = i * 2;

				buffer[i] = (byte) Integer.parseInt(
						s.substring(start, start + 2), 16);
				pos++;
			}

			return new String(buffer, 0, pos, Encoder);
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return s;
	}

	/**
	 * 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名.
	 * 
	 * @param s	原串
	 * @param Encoder	编码格式
	 * @return
	 */
	public static String convertStringToUTF8(String s,String Encoder) {
		if (s == null || s.equals("")) {
			return null;
		}
		StringBuffer sb = new StringBuffer();
		try {
			char c;
			for (int i = 0; i < s.length(); i++) {
				c = s.charAt(i);
				if (c >= 0 && c <= 255) {
					sb.append(c);
				} else {
					byte[] b;

					b = Character.toString(c).getBytes(Encoder);

					for (int j = 0; j < b.length; j++) {
						int k = b[j];
						if (k < 0)
							k += 256;
						sb.append(Integer.toHexString(k).toUpperCase());
						// sb.append("%" +Integer.toHexString(k).toUpperCase());
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();

		}
		return sb.toString();
	}
}

 

代码如下

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ASCII是一种基于英语字母的字符编码标准,它使用7位二进制数字来表示128个不同的字符。如果要将ASCII字符转换16进制,可以使用以下步骤: 1. 将ASCII字符转换为它的十进制ASCII码。 2. 将十进制ASCII码转换16进制。 例如,要将字符'A'转换16进制,首先需要查找其ASCII码值,可以使用以下Python代码: ``` ord('A') ``` 该代码将返回65,这是字符'A'的ASCII码值。接下来,将65转换16进制,可以使用以下代码: ``` hex(65) ``` 该代码将返回字符串'0x41',其中'41'是65的16进制表示形式。因此,字符'A'的16进制表示为'41'。 ### 回答2: ASCII码是一种将字符映射到整数的编码系统。它包含了128个字符,其中包括了数字、英文字母(大小写)以及一些符号。然而,由于ASCII码只适用于英语等较为简单的字符集,所以它无法直接表示汉字等复杂字符。 要将汉字转换16进制,我们需要使用Unicode编码。Unicode是一种更通用的字符编码系统,它包含了全球各种语言的字符,并且为每个字符分配了一个唯一的数字编码。可以通过将汉字的Unicode编码转换16进制数来得到16进制表示形式。 首先,我们需要确定汉字的Unicode编码值。可以通过各种编程语言中的内置函数或在线工具来获得汉字的Unicode编码。 然后,将Unicode编码值转换16进制数。要将十进制数转换为十六进制数,我们可以使用除2取余法。将十进制数连续除以16,每次取余数作为16进制数的一位。最后,将这些余数按照从低位到高位的顺序组合在一起,即可得到汉字16进制表示。 举个例子,假设我们要将汉字 "你" 转换16进制,它的Unicode编码值为 20320。我们可以使用除2取余法,按照以下步骤进行转换: 20320 ÷ 16 = 1270 ... 0 1270 ÷ 16 = 79 ... 6 79 ÷ 16 = 4 ... 15 4 ÷ 16 = 0 ... 4 所以,汉字 "你" 的16进制表示为 4F60。 总结起来,要将ASCII汉字转换16进制,我们需要获得汉字的Unicode编码,然后将Unicode编码转换16进制数。这样,我们就可以得到汉字16进制表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0千里之行0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值