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

java中String\十六进制String\byte[]之间相互转换函数

阅读更多

 public static String stringToHexString(String strPart) {
        String hexString = "";
        for (int i = 0; i < strPart.length(); i++) {
            int ch = (int) strPart.charAt(i);
            String strHex = Integer.toHexString(ch);
            hexString = hexString + strHex;
        }
        return hexString;
    }

private static String hexString="0123456789ABCDEF";

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

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

private static byte uniteBytes(byte src0, byte src1) {
     byte _b0 = Byte.decode("0x" + new String(new byte[] {src0})).byteValue();
     _b0 = (byte) (_b0 << 4);
     byte _b1 = Byte.decode("0x" + new String(new byte[] {src1})).byteValue();
     byte ret = (byte) (_b0 | _b1);
     return ret;

public static byte[] HexString2Bytes(String src)
{
   byte[] ret = new byte[6];
   byte[] tmp = src.getBytes();
   for(int i=0; i<6; ++i )
   {
    ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
      }
   return ret;
}

 
 ====================================================================

java 格式化输出十六进制数
   // 以16进制输出文件内容, 每16个数换行一次
   for(int i = 0; i < nLen; i++)
   {
    if(i % 16 == 0)
     System.out.println();
    String strHex = new String();
    strHex = Integer.toHexString(chBuf[i]).toUpperCase();
    if(strHex.length() > 3)
     System.out.print(strHex.substring(6));
    else
     if(strHex.length() < 2)
      System.out.print("0" + strHex);
     else
      System.out.print(strHex);
   
    System.out.print(" ");
   }
 输出结果
-----------------------------------------------------------------------
FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01
00 01 00 00 FF E1 00 E6 45 78 69 66 00 00 49 49
2A 00 08 00 00 00 05 00 12 01 03 00 01 00 00 00
01 00 00 00 31 01 02 00 1C 00 00 00 4A 00 00 00
32 01 02 00 14 00 00 00 66 00 00 00 13 02 03 00
01 00 00 00 01 00 00 00 69 87 04 00 01 00 00 00
7A 00 00 00
 =================================
当我们把string字符串转成byte[]后,要再转成string 通过String.valueof()是实现不了的,只能new string(byte [])。

分享到:
评论

相关推荐

    C# char[]与string byte[]与string之间的转换详解

    1、char[]与string之间的转换 //string 转换成 Char[] string str=hello; char[] arr=str.ToCharArray(); //Char[] 转换成 string string str1 = new string(arr); 2、byte[]与string之间的转化 string str = 你好...

    PHP字符串和十六进制如何实现互相转换

    今天在做项目中,因为要调用别人网站的接口,结果需要对请求和返回的时间进行十六进制加密处理,于是在网上查了下资料谢了一个转换Demo做个记录。 如果在TP下使用可以将下面函数放到common.php中 一,加密函数 &lt;...

    C#中Byte转换相关的函数

    1、将一个对象转换为byte对象 public static byte GetByte(object o)...2、将一个十六进制字符串转换为byte对象,字符串以0x开头 public static byte GetByteFormHex(string hexValue) { try { return Convert.ToBy

    c++一些基本的处理函数

    //基本的处理函数,不引用其它任何头文件 typedef unsigned char BYTE; extern "C" { BYTE __stdcall hextobcd(BYTE *buf); void __stdcall bcdtohex(BYTE b,BYTE *buf); bool __stdcall hextostring(unsigned char ...

    jdk-8u241-windows-i586 (1).exe

    我们看到的加密后的摘要是十六进制的,而类返回给我们的是byte数组,我们需要byte[]转换成十六进制字符串。具体方法是:用HexBinaryAdapter类,他有一个marshal(byte[] bytes)方法,他可以将byte[]转换为String。 ...

    关于PHP中字符串与多进制转换函数的实例代码

    转换函数 /** * [字符串转换为(2,8,16进制)ASCII码] * @param string $str [待处理字符串] * @param boolean $encode [字符串转换为ASCII|ASCII转换为字符串] * @param string $intType [2,8,16进制标示] * @...

    delphi通用函数单元一

    function ByteToBin(Value: Byte): string; {测试通过} {* 字节转二进制串} function StrRight(Str: string; Len: Integer): string; {测试通过} {* 返回字符串右边的字符 Examples: StrRight('ABCEDFG',3); 返回:'...

    史上最全Java面试题目大集合

    整理了网上的一些java面试题目,很全很强大 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题...

    Unicode下CString与char*之间的转换(vs2008绝对实用)

    在VS2008中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多...这里总结了在VS2008环境中 Unicode字符集下CString和char *之间相互转换的几种方法,其实也就是Unicode字符集与MBCS字符集转换。

    pb9 写的字符串转化为数组函数

    将字符串转化为数组,资源为pb9导出来的文本文件,可以直接导入pb9,也可以打开查看

    使用Python进行二进制文件读写的简单方法(推荐)

    python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。 import struct a=12.34 #将a变为二进制 bytes=struct.pack(‘i’,a) ...

    C#中string与byte[]的转换帮助类-.NET教程,C#语言

    主要实现了以下的函数 代码中出现的sidle是我的网名。 /**//* * @author wuerping * @version 1.0 * @date 2004/11/30 * @description: */ using system; using system.text; namespace ...

    不用string.h库函数的,方便易用的字符串处理函数,减少库带来代码量

    减少库的使用,解决那些需要小代码量,但苦恼于没有简易的字符串处理函数的郁闷 char *itoa_private(int val, char *buf, unsigned radix);//整数转字符串 int my_isdigit(int ch);//判断字符是否为数字 long long ...

    VBScript 语言参考中文手册CHM

    Hex 函数 返回表示数的十六进制值的字符串。 HelpContext 属性 设置或返回帮助文件中某主题的上下文 ID。 HelpFile 属性 设置或返回帮助文件的全路径。 Hour 函数 返回小时数,取值范围为 0 至 23。 If...Then.....

    java数组作业

    请参照String类,对一个封装了字节数组的类提供如下函数 public class MyByteArray { private byte[] data; public MyByteArray(byte[] data) { this.data = data; } //返回字节数据b在字节数组中的位置 ...

    asp.net 字符串、二进制、编码数组转换函数

    1.字符串转二进制数组 string content=”这是做个测试!”; System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding(); byte[] byteArr = converter.GetBytes(content); 2.二进制数组转为字符串 ...

    Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题

    Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别...

    VBSCRIPT中文手册

    Hex 函数 返回表示数的十六进制值的字符串。 HelpContext 属性 设置或返回帮助文件中某主题的上下文 ID。 HelpFile 属性 设置或返回帮助文件的全路径。 Hour 函数 返回小时数,取值范围为 0 至 23。 If...Then.....

    VBSCRIP5 -ASP用法详解

    Hex 函数 返回表示数的十六进制值的字符串。 HelpContext 属性 设置或返回帮助文件中某主题的上下文 ID。 HelpFile 属性 设置或返回帮助文件的全路径。 Hour 函数 返回小时数,取值范围为 0 至 23。 If...Then.....

Global site tag (gtag.js) - Google Analytics