`
war_martin
  • 浏览: 115334 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编码转换

 
阅读更多

java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/**
    * 把16进制字符串转换成字节数组
    * @param hex
    * @return
    */
public static byte[] hexStringToByte(String hex) {
    int len = (hex.length() / 2);
    byte[] result = new byte[len];
    char[] achar = hex.toCharArray();
    for (int i = 0; i < len; i++) {
     int pos = i * 2;
     result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
    }
    return result;
}

private static byte toByte(char c) {
    byte b = (byte) "0123456789ABCDEF".indexOf(c);
    return b;
}

/**
    * 把字节数组转换成16进制字符串
    * @param bArray
    * @return
    */
public static final String bytesToHexString(byte[] bArray) {
    StringBuffer sb = new StringBuffer(bArray.length);
    String sTemp;
    for (int i = 0; i < bArray.length; i++) {
     sTemp = Integer.toHexString(0xFF & bArray[i]);
     if (sTemp.length() < 2)
      sb.append(0);
     sb.append(sTemp.toUpperCase());
    }
    return sb.toString();
}

/**
    * 把字节数组转换为对象
    * @param bytes
    * @return
    * @throws IOException
    * @throws ClassNotFoundException
    */
public static final Object bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {
    ByteArrayInputStream in = new ByteArrayInputStream(bytes);
    ObjectInputStream oi = new ObjectInputStream(in);
    Object o = oi.readObject();
    oi.close();
    return o;
}

/**
    * 把可序列化对象转换成字节数组
    * @param s
    * @return
    * @throws IOException
    */
public static final byte[] objectToBytes(Serializable s) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ObjectOutputStream ot = new ObjectOutputStream(out);
    ot.writeObject(s);
    ot.flush();
    ot.close();
    return out.toByteArray();
}

public static final String objectToHexString(Serializable s) throws IOException{
    return bytesToHexString(objectToBytes(s));
}

public static final Object hexStringToObject(String hex) throws IOException, ClassNotFoundException{
    return bytesToObject(hexStringToByte(hex));
}

/**
    * @函数功能: BCD码转为10进制串(阿拉伯数据)
    * @输入参数: BCD码
    * @输出结果: 10进制串
    */
public static String bcd2Str(byte[] bytes){
    StringBuffer temp=new StringBuffer(bytes.length*2);

    for(int i=0;i<bytes.length;i++){
     temp.append((byte)((bytes[i]& 0xf0)>>>4));
     temp.append((byte)(bytes[i]& 0x0f));
    }
    return temp.toString().substring(0,1).equalsIgnoreCase("0")?temp.toString().substring(1):temp.toString();
}

/**
    * @函数功能: 10进制串转为BCD码
    * @输入参数: 10进制串
    * @输出结果: BCD码
    */
public static byte[] str2Bcd(String asc) {
    int len = asc.length();
    int mod = len % 2;

    if (mod != 0) {
     asc = "0" + asc;
     len = asc.length();
    }

    byte abt[] = new byte[len];
    if (len >= 2) {
     len = len / 2;
    }

    byte bbt[] = new byte[len];
    abt = asc.getBytes();
    int j, k;

    for (int p = 0; p < asc.length()/2; p++) {
     if ( (abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {
      j = abt[2 * p] - '0';
     } else if ( (abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {
      j = abt[2 * p] - 'a' + 0x0a;
     } else {
      j = abt[2 * p] - 'A' + 0x0a;
     }

     if ( (abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {
      k = abt[2 * p + 1] - '0';
     } else if ( (abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) {
      k = abt[2 * p + 1] - 'a' + 0x0a;
     }else {
      k = abt[2 * p + 1] - 'A' + 0x0a;
     }

     int a = (j << 4) + k;
     byte b = (byte) a;
     bbt[p] = b;
    }
    return bbt;
}
/**
    * @函数功能: BCD码转ASC码
    * @输入参数: BCD串
    * @输出结果: ASC码
    */
public static String BCD2ASC(byte[] bytes) {
    StringBuffer temp = new StringBuffer(bytes.length * 2);

    for (int i = 0; i < bytes.length; i++) {
     int h = ((bytes[i] & 0xf0) >>> 4);
     int l = (bytes[i] & 0x0f);   
     temp.append(BToA[h]).append( BToA[l]);
    }
    return temp.toString() ;
}

/**
    * MD5加密字符串,返回加密后的16进制字符串
    * @param origin
    * @return
    */
public static String MD5EncodeToHex(String origin) { 
       return bytesToHexString(MD5Encode(origin));
     }

/**
    * MD5加密字符串,返回加密后的字节数组
    * @param origin
    * @return
    */
public static byte[] MD5Encode(String origin){
    return MD5Encode(origin.getBytes());
}

/**
    * MD5加密字节数组,返回加密后的字节数组
    * @param bytes
    * @return
    */
public static byte[] MD5Encode(byte[] bytes){
    MessageDigest md=null;
    try {
     md = MessageDigest.getInstance("MD5");
     return md.digest(bytes);
    } catch (NoSuchAlgorithmException e) {
     e.printStackTrace();
     return new byte[0];
    }
  
 
分享到:
评论

相关推荐

    java编码转换工具

    java编码转换工具

    java编码转换介绍文档

    Java编码转换是一个重要的主题,特别是在处理跨平台和国际化应用时。Java编程中,编码问题时常出现,例如在处理中文字符时可能出现乱码。为了解决这些问题,Java提供了一个名为`native2ascii`的工具,该工具能够帮助...

    java编码转换的详细过程.pdf

    Java 编码转换的详细过程 Java 编码转换是 Java 程序的生命周期中一个非常重要的过程。在 Java 程序的生命周期中,编程人员首先编写源程序代码,然后将其编译成.class 文件,最后将其运行在 JVM 中。在这个过程中,...

    JAVA编码转换一个类 源代码

    编码转换的类 含源代码, 适合编码转换时候使用 默认转换为UTF-8 可以转换成别的

    Java文件编码转换源码

    在Java编程语言中,文件编码转换是一个常见的任务,特别是在处理多国语言或者处理不同系统间的文件传输时。本文将深入探讨如何使用Java实现文件编码的转换,主要关注GB2312、UTF-8这两种常见编码格式之间的转换。 ...

    java中文乱码解决之道(4)java编码转换过程Java

    在Java编程语言中,中文乱码问题是一个常见的挑战,特别...以上内容涵盖了Java编码转换的基本原理和处理乱码问题的关键点,希望对Java开发者有所帮助。在实际工作中,遇到具体问题时,还需结合实际情况进行分析和调试。

    java编码转换源码-encoding-guard:防止Java源代码发生意外的编码转换

    java编码转换原始码Java编码卫士 如果更改了编码,则使Java源代码不可编译,从而防止了Java源代码的意外编码转换。 要求将预期的源代码编码硬编码到您的构建脚本中。 源代码的当前编码为UTF-8。 测试如下: ant ...

    java字符串编码转换

    ### Java字符串编码转换详解 #### 一、Java 字符串编码转换基础 在Java中,字符串的处理是非常常见的操作之一,而字符编码是确保数据正确显示的关键因素。本篇文章将重点介绍Java中字符串编码的转换方法及其在Web...

    JAVA 转换字符编码工具

    `JAVA 转换字符编码工具`可能是一个用于处理字符编码转换的Java程序,旨在帮助开发者解决不同编码格式之间转换的问题。这篇博文链接(虽然没有提供具体内容)可能详细介绍了这个工具的实现原理和使用方法。 在Java...

    java_各种编码转换源代码

    在Java编程语言中,编码转换是一项重要的任务,特别是在处理不同来源的数据时,如读取文本文件、网络数据传输或数据库交互。...通过深入研究和实践,可以增强对Java编码转换机制的理解,提升软件质量。

    Java源码编码转换器 GBK TO UTF8 UTF8 To GBK(无源码)

    通过分析和学习这个源码,开发者可以深入了解Java编码转换的原理和实践,也可以根据自己的需求进行定制和扩展。 总之,Java源码编码转换器是一个方便的开发工具,它解决了不同编码格式之间的转换问题,尤其是对于...

    java 文件编码转换

    标题"java 文件编码转换"指的是使用Java来解决文件编码问题,而描述中提到的"提供一个jar包和一个java文件"则暗示了我们可以通过这两个文件实现这个功能。 首先,`chardet.jar`可能是一个字符集检测库,用于自动...

    Java项目编码转换工具

    NULL 博文链接:https://00fly.iteye.com/blog/2159906

    java编码格式转换

    ### Java编码格式转换 在Java开发中,字符编码的转换是一项常见的需求,尤其是在处理国际化文本时。本文将详细介绍如何在不同的编码格式之间进行转换,并探讨一些常见的编码转换错误及其处理方法。 #### Unicode与...

    java文件字符编码检测和转换

    附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互转换 FileCharsetConverter.convert( "gbk/DispatcherHandler.java", "GBK", "UTF-8", new FilenameFilter() { public boolean accept(File...

    java字符串的各种编码转换

    根据提供的文件信息,本文将详细解释Java中字符串的不同编码转换方法及原理,并深入探讨每种编码格式的特点。 ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理...

    java批量转换文件编码

    本话题主要关注如何使用Java进行批量文件编码转换,特别是从一种编码(如GBK)转换到另一种编码(如UTF-8)。以下是对这个主题的详细阐述: 首先,我们需要理解什么是文件编码。文件编码是存储和显示文本内容的规则...

    java文件的编码转换

    本文将深入探讨“Java文件的编码转换”这一主题,以及如何利用Java来解决由于不同编码格式引起的兼容性问题。 首先,我们需要理解什么是文件编码。文件编码是指在计算机中存储和处理文本的方式,常见的有GBK和UTF-8...

    Java源码编码转换器 v2.0 GBK TO UTF8

    Java源码编码转换器v2.0是一款专用于解决Java源码编码问题的工具,它主要功能是将GBK编码的Java文件转换成UTF-8编码,以解决由于编码不匹配导致的乱码问题。该工具在之前的版本基础上进行了优化,修复了UTF-8转换后...

    文件编码转换工具java

    标题中的“文件编码转换工具java”表明这是一款基于Java编程语言开发的应用,主要功能是进行文件编码的转换。在IT领域,文件编码是至关重要的,不同的编码格式适用于不同的语言和平台,例如ASCII、UTF-8、GBK等。这...

Global site tag (gtag.js) - Google Analytics