本帖来源
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实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...
16进制数值向2进制字符串转化的小程序,亲测有效,内部附有解释说明
本文将深入探讨如何在C语言环境中实现二进制字符串与十六进制字符串之间的转换,并结合MFC(Microsoft Foundation Classes)框架创建一个小工具来辅助这些操作。 首先,让我们理解二进制和十六进制的基本概念。二...
该软件可以完成十六进制数间的去空格,加空格,及转化为字符串,十进制等
本工具专注于ANSI和UNICODE字符串与十六进制之间的转换,这涉及到字符编码和二进制数据的理解。 首先,我们要理解ANSI和UNICODE的概念。ANSI字符串通常指的是基于特定地区或语言的ASCII编码,它使用7位或8位来表示...
关于字符串与十六进制码之间的转化,网上到是有不少理论方法,但是可用的没多少,专门写一个demo的更是没有。所以我自己写了一个实例(PS:用VC++6.0写的)上传,以便于遇到这个问题的人能更快的解决这个问题。
2. 16进制转文本:使用“十六进制到整数”函数(HexToInteger)将16进制字符串转换为整数,然后根据整数值查找对应的字符。需要注意的是,处理多字节字符时,可能需要考虑字节顺序问题。 四、源码解析 在“易语言...
labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习
本文将深入探讨十六进制字符串与浮点数、整型之间的转换,并提供在Qt和VC2010环境下实现这些转换的源代码。 首先,我们要理解不同进制的概念。在计算机科学中,我们常用的是二进制、八进制、十进制和十六进制。十六...
本篇文章将深入探讨如何在C#语言中实现十六进制与中文汉字之间的相互转换,这不仅对理解和处理多语言文本有重要意义,也是开发国际化应用的基础之一。 ### 十六进制与中文汉字转换的重要性 在计算机系统中,所有的...
另一个代码片段来自`NumberChange`类,它提供了`hexStringToByte`和`bytesToHexString`方法,分别用于将16进制字符串转换为字节数组和将字节数组转换为16进制字符串。这两个方法同样考虑了中文字符的多字节特性,但...
一个字节由8位组成,可以表示0到255之间的数值,而十六进制字符串则是每四位二进制对应一个十六进制字符。 方法一:逐个字节转换 我们可以遍历字节数组,将每个字节转换为对应的十六进制字符串。这个过程通常包括两...
VBA实现单精度浮点数与十六进制字符串相互转换,并提供2个相互转换的示例 第一个按钮: "A1录入十六进制8位字符串; B1输出单精度浮点数结果" 第二个按钮 "将B1作为单精度浮点数输入 C1输出16进制结果
标题“16进制汉字互转(16进制和汉字转换工具C#安装版)”表明我们讨论的是一个基于C#编程语言开发的软件工具,该工具能够实现16进制字符串与汉字字符之间的相互转换。C#是一种面向对象的编程语言,由微软公司开发,...
sql 2005 十六进制转换十进制.sql 各进制之间的相互转化
Java 二进制数据与 16 进制字符串相互转换方法 Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制...
- **用户界面**: 这个工具可能包含输入框供用户输入文本或16进制字符串,以及按钮触发转换操作并显示结果。 - **错误处理**: 良好的源码会包含错误处理机制,如检查输入合法性,防止非法字符或超过范围的16进制值...
### SQL 16进制转10进制 #### 知识点概述 本文将详细介绍如何在SQL中实现从十六进制数值到十进制数值的转换。此过程涉及SQL中的字符串操作、数学运算以及条件判断等技术要点。通过本文的学习,读者可以深入理解SQL...
labview十六进制转十进制,输入字符串控件是十六进制显示。