做课程设计的时候在处理vCard格式的时候遇到过出现十六进制编码的情况,例如

QUOTED-PRINTABLE:=XX=XX=XX=XX=XX``````

  其中XX代表十六进制数,当然,也有可能在末尾跟着非十六进制的字符串(一般是数字)。每一个十六进制数的前面都有一个“=”,那么我们需要怎样处理它才能得到我们需要的字符串呢?

先看代码:

 package Function.Base_Function;

 import java.io.UnsupportedEncodingException;

 /**
*
* @author Sineatos
*/ public class CodeTranslator {
private CodeTranslator(){
} /**
* 将十六进制编码转化为目标编码
*/
public static String HextoString(String string,String CodeName){
String[] Hex;
Hex = string.split("=");
byte[] bytes = new byte[Hex.length-];
int j=;
for(int i=;i<Hex.length;i++){
if(Hex[i].length()>){
/*如果是非十六进制编码的时候直接将这些编码写进bytes数组*/
byte[] wordsbytes = Hex[i].getBytes();
byte[] newbytes = new byte[bytes.length + wordsbytes.length];
// System.attaycopy(src,srcPos,dest,destPos,length);
System.arraycopy(bytes, , newbytes, , bytes.length);
System.arraycopy(wordsbytes, , newbytes, j, wordsbytes.length);
bytes = newbytes;
j=j+wordsbytes.length;
}else{
Integer hex = Integer.decode("0x" + Hex[i]);
bytes[j] = hex.byteValue();
j++;
}
}
String newstring = null;
try {
newstring = new String(bytes,CodeName);
} catch (UnsupportedEncodingException ex) {
System.out.println("Error in Encoding Vcard");
}
return newstring;
}
}

  这里我们需要用到的是Integer和String。

  public static Integer decode(String nm)
  将 String 解码为 Integer。接受通过以下语法给出的十进制、十六进制和八进制数字

  

  public String(byte[] bytes,String charsetName)
  通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。新 String 的长度是字符集的函数,因此可能不等于 byte 数组的长度。

  先将十六进制转成byte,然后再用String的构造方法生成字符串。

Java - 将vCard中十六进制编码转换成Unicode的更多相关文章

  1. java 把URL中的中文转换成utf-8编码

    private static final String QUERY = "餐饮"; String sr = URLEncoder.encode(QUERY); System.out ...

  2. 利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字

    序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...

  3. java中字符串编码转换

    Java 正确的做字符串编码转换 字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码 ...

  4. java中汉字自动转换成拼音

    java中汉字自动转换成拼音 1.需要下载jar包 pinyin4j.2.5.0.jar ,加入到WEB-INF下的lib里边,右键add to bulid path. 2.[代码]PinYinUti ...

  5. Java中将0x开头的十六进制字符串转换成十进制整数

    1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...

  6. java字符串应用之字符串编码转换

    [转载]原文地址:https://blog.csdn.net/zhouyong80/article/details/1900100 无论是对程序的本地化还是国际化,都会涉及到字符编码的转换的问题.尤其 ...

  7. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  8. 小话python 中的编码转换

    1.前言: 一直认为自己会了,也明白了其中的知识,但是过几天不用就马上忘记了,总不能天天复习吧!还是来个好记性不如烂笔头吧! 2.编码: python解释器在加载 .py 文件中的代码时,会对内容进行 ...

  9. python中字符串编码转换

    字符串编码转换程序员最苦逼的地方,什么乱码之类的几乎都是由汉字引起的. 其实编码问题很好搞定,只要记住一点: 任何平台的任何编码,都能和Unicode互相转换. UTF-8与GBK互相转换,那就先把U ...

随机推荐

  1. Android 的Recovery机制【转】

    本文转载自:http://blog.csdn.net/fengying765/article/details/38301895 Android 的Recovery机制 目录 1. 系统的启动模式 1 ...

  2. 欧拉函数&&欧拉定理

    定义和简单性质 欧拉函数在OI中是个非常重要的东西,不知道的话会吃大亏的. 欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数. 对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1 ...

  3. poj 2288 Islands and Bridges ——状压DP

    题目:http://poj.org/problem?id=2288 状压挺明显的: 一开始写了(记忆化)搜索,但一直T: #include<iostream> #include<cs ...

  4. Python 31 TCP协议 、socket套接字

    1.TCP协议 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割. (1)三次握手建链接( ...

  5. 制作一个 JavaScript 小游戏

    简评: 作者学习了编程两个月,边学边做了一个 JavaScript 小游戏,在文中总结了自己在这个过程中的一些体会,希望能给其他初学者一些帮助. 对于很多想学编程但一直没下定决心的同学来说,最大的问题 ...

  6. CALayer帧动画

    CALayer帧动画 _sunLayer = [[CALayer alloc]init]; _sunLayer.contents = (id)[UIImage imageNamed:@"su ...

  7. Jquery中绑定事件的异同

    谈论jquery中bind(),live(),delegate(),on()绑定事件方式 1. Bind() $(selector).bind(event,data,function) Event:必 ...

  8. Oracle 当输入参数允许为空时

    场景: 有一个存储过程p_test 带有多个输入参数code.name.number p_test(code IN VARCHAR2,nameIN VARCHAR2,number IN VARCHAR ...

  9. index seek和index scan 提高sql 效率

    index seek和index scan 提高sql 效率解释解释index seek和index scan:索引是一颗B树,index seek是查找从B树的根节点开始,一级一级找到目标行.ind ...

  10. electron 学习

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...