java有关unicode与十进制数字的转换

java有关unicode与十进制数字的转换... java有关unicode与十进制数字的转换 展开
 我来答
pieryon
2015-12-06 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166869
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
1、unicode编码规则

unicode码对每一个字符用4位16进制数表示。具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,
如果转化的16进制数的长度不足2位,则在其后补0,然后将高、低8位转成的16进制字符串拼接起来并在前面补上"\u" 即可。

2、转码程序

1)字符串转unicode

/**
* 将字符串转成unicode
* @param str 待转字符串
* @return unicode字符串
*/
public String convert(String str)
{
str = (str == null ? "" : str);
String tmp;
StringBuffer sb = new StringBuffer(1000);
char c;
int i, j;
sb.setLength(0);
for (i = 0; i < str.length(); i++)
{
c = str.charAt(i);
sb.append("\\u");
j = (c >>>8); //取出高8位
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);
j = (c & 0xFF); //取出低8位
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);

}
return (new String(sb));
}

2)unicode转成字符串,与上述过程反向操作即可
/**
* 将unicode 字符串
* @param str 待转字符串
* @return 普通字符串
*/
public String revert(String str)
{
str = (str == null ? "" : str);
if (str.indexOf("\\u") == -1)//如果不是unicode码则原样返回
return str;

StringBuffer sb = new StringBuffer(1000);

for (int i = 0; i < str.length() - 6;)
{
String strTemp = str.substring(i, i + 6);
String value = strTemp.substring(2);
int c = 0;
for (int j = 0; j < value.length(); j++)
{
char tempChar = value.charAt(j);
int t = 0;
switch (tempChar)
{
case 'a':
t = 10;
break;
case 'b':
t = 11;
break;
case 'c':
t = 12;
break;
case 'd':
t = 13;
break;
case 'e':
t = 14;
break;
case 'f':
t = 15;
break;
default:
t = tempChar - 48;
break;
}

c += t * ((int) Math.pow(16, (value.length() - j - 1)));
}
sb.append((char) c);
i = i + 6;
}
return sb.toString();
}
追问
我的问题是十进制数字与二进制的Unicode转换
追答
随便转啊,你看我写的方法。
雪飞潇潇
推荐于2018-03-03 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:873万
展开全部
public class Demo {
public static void main(String[] args) {
//获得字符的uncoide编码
char c = '风';
String uncoide = Integer.toHexString(c);
System.out.println(c+"的uncoide编码:\t"+uncoide);

//从uncoide编码转换成10进制
int x = Integer.parseInt(uncoide, 16);
System.out.println(uncoide+"转成10进制:\t"+x);

//从10进制转成uncoide编码
int y = 39118;
System.out.println(y+"转成uncoide编码:\t"+Integer.toHexString(y));

}
}

运行测试

风的uncoide编码:	98ce
98ce转成10进制: 39118
39118转成uncoide编码: 98ce
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式