`

16进制和字符串(包括中文)之间的相互转化

阅读更多
本帖来源http://gufenglian.iteye.com/blog/348282
package com.ldl.dsa;

import java.io.ByteArrayOutputStream;

/**
 * Description  字符串(包含中文)和16进制之间的转换
 */
public class CodeChange {
 /**
 * 16进制数字字符集
 */
 private static String hexString="0123456789ABCDEF";

 
 
 public static void main(String[] args) {
  System.out.println(toStringHex("41"));
 }
 
 /**
  * 转化字符串为十六进制编码
  */
 public static String toHexString(String s){  
  String str="";  
  for (int i=0;i<s.length();i++){  
   int ch = (int)s.charAt(i);  
   String s4 = Integer.toHexString(ch);  
   str = str + s4;
  }  
  return str;  
 }

 /**
  * 转化十六进制编码为字符串
  */
 public static String toStringHex(String s){
  byte[] baKeyword = new byte[s.length()/2];
  for(int i = 0; i < baKeyword.length; i++){
   try{
    baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
   }catch(Exception e){
    e.printStackTrace();
   }
  }

  try{
   s = new String(baKeyword, "utf-8");//UTF-16le:Not
  }catch (Exception e1){
   e1.printStackTrace();
  }
  return s;
 }

 /**
  * 将字符串编码成16进制数字,适用于所有字符(包括中文)
  */
 public static String encode(String str){
  //根据默认编码获取字节数组
  byte[] bytes=str.getBytes();
  StringBuilder sb=new StringBuilder(bytes.length*2);
  //将字节数组中每个字节拆解成2位16进制整数
  for(int i=0;i<bytes.length;i++){
   sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
   sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
  }
  return sb.toString();
 }
 /**
  * 将16进制数字解码成字符串,适用于所有字符(包括中文)
  */
 public static String decode(String bytes)
 {
  ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
  //将每2位16进制整数组装成一个字节
  for(int i=0;i<bytes.length();i+=2)
   baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
  return new String(baos.toByteArray());
 }
}

分享到:
评论

相关推荐

    javascript实现的字符串与十六进制表示字符串相互转换方法

    本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...

    labview16进制数值向2进制字符串转化

    16进制数值向2进制字符串转化的小程序,亲测有效,内部附有解释说明

    C语言二进制字符串与十六进制字符串相互转化

    本文将深入探讨如何在C语言环境中实现二进制字符串与十六进制字符串之间的转换,并结合MFC(Microsoft Foundation Classes)框架创建一个小工具来辅助这些操作。 首先,让我们理解二进制和十六进制的基本概念。二...

    十六进制ASCII字符串相互转化

    该软件可以完成十六进制数间的去空格,加空格,及转化为字符串,十进制等

    字符串十六进制转换工具(包含ANSI和UNICODE)

    本工具专注于ANSI和UNICODE字符串与十六进制之间的转换,这涉及到字符编码和二进制数据的理解。 首先,我们要理解ANSI和UNICODE的概念。ANSI字符串通常指的是基于特定地区或语言的ASCII编码,它使用7位或8位来表示...

    MFC/VC++字符串与十六进制码之间互相转化

    关于字符串与十六进制码之间的转化,网上到是有不少理论方法,但是可用的没多少,专门写一个demo的更是没有。所以我自己写了一个实例(PS:用VC++6.0写的)上传,以便于遇到这个问题的人能更快的解决这个问题。

    易语言文本和16进制相互转换工具

    2. 16进制转文本:使用“十六进制到整数”函数(HexToInteger)将16进制字符串转换为整数,然后根据整数值查找对应的字符。需要注意的是,处理多字节字符时,可能需要考虑字节顺序问题。 四、源码解析 在“易语言...

    labview 4字节一维数组整数转为4字节16进制字符串.vi

    labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习

    十六进制字符串到浮点数,整型的相互转换源代码(qt+vc2010)

    本文将深入探讨十六进制字符串与浮点数、整型之间的转换,并提供在Qt和VC2010环境下实现这些转换的源代码。 首先,我们要理解不同进制的概念。在计算机科学中,我们常用的是二进制、八进制、十进制和十六进制。十六...

    C#十六进制和中文汉字之间的转换

    本篇文章将深入探讨如何在C#语言中实现十六进制与中文汉字之间的相互转换,这不仅对理解和处理多语言文本有重要意义,也是开发国际化应用的基础之一。 ### 十六进制与中文汉字转换的重要性 在计算机系统中,所有的...

    Android字符串和十六进制相互转化出现的中文乱码问题

    另一个代码片段来自`NumberChange`类,它提供了`hexStringToByte`和`bytesToHexString`方法,分别用于将16进制字符串转换为字节数组和将字节数组转换为16进制字符串。这两个方法同样考虑了中文字符的多字节特性,但...

    android byte字节数组转换十六进制字符串

    一个字节由8位组成,可以表示0到255之间的数值,而十六进制字符串则是每四位二进制对应一个十六进制字符。 方法一:逐个字节转换 我们可以遍历字节数组,将每个字节转换为对应的十六进制字符串。这个过程通常包括两...

    VBA实现单精度浮点数与十六进制字符串相互转换

    VBA实现单精度浮点数与十六进制字符串相互转换,并提供2个相互转换的示例 第一个按钮: "A1录入十六进制8位字符串; B1输出单精度浮点数结果" 第二个按钮 "将B1作为单精度浮点数输入 C1输出16进制结果

    16进制汉字互转(16进制和汉字转换工具C#安装版)

    标题“16进制汉字互转(16进制和汉字转换工具C#安装版)”表明我们讨论的是一个基于C#编程语言开发的软件工具,该工具能够实现16进制字符串与汉字字符之间的相互转换。C#是一种面向对象的编程语言,由微软公司开发,...

    sql 2005 十六进制转换十进制.sql 各进制之间的相互转化

    sql 2005 十六进制转换十进制.sql 各进制之间的相互转化

    java 二进制数据与16进制字符串相互转化方法

    Java 二进制数据与 16 进制字符串相互转换方法 Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制...

    易语言源码易语言文本和16进制相互转换工具.rar

    - **用户界面**: 这个工具可能包含输入框供用户输入文本或16进制字符串,以及按钮触发转换操作并显示结果。 - **错误处理**: 良好的源码会包含错误处理机制,如检查输入合法性,防止非法字符或超过范围的16进制值...

    SQL 16进制转10进制

    ### SQL 16进制转10进制 #### 知识点概述 本文将详细介绍如何在SQL中实现从十六进制数值到十进制数值的转换。此过程涉及SQL中的字符串操作、数学运算以及条件判断等技术要点。通过本文的学习,读者可以深入理解SQL...

    labview十六进制转十进制

    labview十六进制转十进制,输入字符串控件是十六进制显示。

Global site tag (gtag.js) - Google Analytics