`
gufenglian
  • 浏览: 51127 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

16进制和字符串(包括中文)的转换

阅读更多

这两天找这个找了很久,到处搜也搜不到资料。

从现在起,好好写博客,好东西大家一起分享

 

package com.util.encode;

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());
 }
}

分享到:
评论
1 楼 xiejielin 2009-03-16  
学习了 谢谢分享 呵呵

相关推荐

    易语言十六进制与字符串转换

    2. **十六进制转字符串**:相反的过程需要先使用“十六进制到整数”函数将十六进制字符串转换为十进制,再用“整数到字符串”函数将十进制数值转化为字符串。需要注意的是,这里的“整数到字符串”可能会产生一个以...

    C++ 16进制和字符串批量转换

    要将16进制字符串转换回原来的字符串,我们需要解析16进制表示,并将每个数字转换为其对应的ASCII值。这通常涉及到分隔16进制字符串,将每两个字符作为一个单独的16进制数,然后将其转换为字符。下面是一个示例函数...

    十六进制与字符串转换

    这个示例展示了如何使用`sprintf`将一个字节转换为十六进制字符串,以及如何使用`strtol`将一个十六进制字符串转换回字节。 在实际应用中,你可能会遇到更复杂的情况,比如处理包含多个字节的数组或者字符串,这时...

    Delphi字符串16进制互相转换

    在Delphi中,16进制字符串转换为整数或字节数组,以及将整数或字节数组转换为16进制字符串,有多种方法。我们可以使用系统提供的函数,如`Hex`和`IntToHex`来进行转换。 1. **16进制字符串转整数**: - 使用`...

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

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

    java16进制与字符串的转换.pdf

    在 Java 中,我们可以使用 `HexString2Bytes` 函数将 16 进制字符串转换为 byte 数组。该函数接受一个参数 src,即 16 进制字符串,然后将其转换为 byte 数组。 ```java public static byte[] HexString2Bytes...

    labview 10进制字符串强制转换为16进制字符串

    本VI实现十进制字符串强制转换为16进制字符串,即输入10进制的0CDA可输出16进制的0CDA

    labview 16进制字符串强制转换为10进制字符串

    本VI实现16进制字符串强制转换为10进制字符串,即输入16进制的03DF本VI可以输出10进制的03DF,如果需要区分大小写,请自行添加强制转换为大写或小写

    16进制数据与字符串之间的转换

    该类的功能主要是实现16进制转字符串和字符串转16进制字符窜和byte数据方法

    QT 收到下位机16进制数转换字符串显示

    你可以使用`QByteArray::fromHex()`或`QString::toLatin1()`方法将16进制字符串转换为字节序列,再通过`QByteArray::toInt()`将其转换为整数。 3. **转换为字符串**:将得到的十进制数值转换为16进制字符串。可以...

    javascript将16进制的字符串转换为10进制整数hex.docx

    例如,如果想要将一个16进制字符串转换为10进制整数,则可以这样操作: ```javascript var hexStr = "FF"; var decimal = parseInt(hexStr, 16); // 结果为255 ``` #### 2. 自定义函数实现 除了使用内置函数外,...

    16进制转字符串

    4. **数据库存储**:某些数据库系统可能需要将二进制数据以十六进制字符串的形式存储,以便于索引或搜索。 #### 总结 十六进制到字符串的转换是计算机科学中一个重要的基础概念,它在多种场景下都有应用。通过上述...

    16进制字符串显示图片工具

    "16进制字符串显示图片工具" 是一个专门用来将16进制字符串转换为可视图像的应用程序。这个工具基于C#(简称CS)语言构建,利用其丰富的库函数和面向对象的特性,实现了从16进制数据到图像的转换功能。C#中的System....

    16进制与字符串、字节数组之间的转换

    反之,从十六进制字符串转换回字节数组的过程也相对简单: ```csharp public static byte[] HexStringToByteArray(string hex) { int length = hex.Length / 2; byte[] bytes = new byte[length]; for (int i = 0...

    labview 16进制字符串转数值

    labview 16进制字符串转数字 也可以把16进制显示的字符串转换成普通显示的字符串

    android字符串和16进制转换

    反过来,将16进制字符串转换回ASCII字符串,我们需要将16进制字符串分割成单个字符,然后将它们解析为整数,最后将这些整数转换回相应的字符。这里有一个示例: ```java public String hexToString(String hex) { ...

    CVI串口字符串16进制转换

    3. **拼接16进制字符串**:将所有16进制字符串连接起来,形成一个完整的16进制表示的字符串。可以使用CVI的字符串操作函数,如`StrCat`,来完成这个任务。 4. **处理结果**:转换完成后,可能需要将结果显示在用户...

    Go-此工具用于将16进制字符串转换成10进制byte数组

    本工具专注于将16进制字符串转换为10进制的byte数组,这在处理如数据库存储、加密解密、网络通信等场景中非常常见。 1. **16进制字符串与10进制byte数组的概念** - **16进制字符串**:由0-9和A-F(或a-f)字符组成...

    16进制转换成字符串16进制转换成字符串16进制转换成字符串16进制转换成字符串

    16进制转换成字符串16进制转换成字符串16进制转换成字符串16进制转换成字符串

    labview 将16进制格式数据转换位二进制字符串,不限输入长度,精准转换;同时包含了普通的16进制字符串先转换为16进制格式

    接口简单,直接调用即可,同时不限制输入长度,同时包含其他函数,将输入的普通字符串转换为16进制字符串后再转换; 兼容90%以上的16进制转2进制的转换需求; 在计算机科学和编程领域,数据通常以不同的形式存在,...

Global site tag (gtag.js) - Google Analytics