做课程设计的时候在处理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. luogu3155 [CQOI2009]叶子的染色

    题目大意 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点( ...

  2. Codeforces--629B--Far Relative’s Problem(模拟)

    Far Relative's Problem Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I ...

  3. 判断文件是否为空 C++

    #include <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); stru ...

  4. 感知器算法 C++

    We can estimate the weight values for our training data using stochastic gradient descent. Stochasti ...

  5. Spark之MLlib

    目录 Part VI. Advanced Analytics and Machine Learning Advanced Analytics and Machine Learning Overview ...

  6. css3 选择器 权重问题 (第二部分)

    这篇博文有关css的权重问题,我个人认为这是css知识中很重要的一个知识点.因为在开发的过程能中我们会经常遇到这种问题,特别是如果你使用框架的时候,有些框架的某些标签有一些默认的样式.所以我们可以通过 ...

  7. getField();在TP5里成什么了?

    拆分为value和column了 $comps=db("company")->where(array("areaid"=>$areaid))-> ...

  8. Java.HttpClient绕过Https证书解决方案一

    方案1 import javax.net.ssl.*; import java.io.*; import java.net.URL; import java.security.KeyManagemen ...

  9. php实时推送系统消息给客户端

    在我们实际开发过程中,有些数据需要实时获取:比如erp系统中的订单信息,OA系统中的流程审批等都需要及时处理,这时我们就不能再使用http协议了:当然也可以使用轮询的机制.但是轮询请求中有大半是无用, ...

  10. linux挂载ntfs格式的U盘

    1.需要安装一个ntfs-3G工具 工具包下载网站:http://www.tuxera.com/community/ntfs-3g-download/ 根据情况选择要下载的包. 2.上传到Linux服 ...