java将字节数组转换成string

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java将字节数组转换成string相关的知识,希望对你有一定的参考价值。

字节数组是高字节在前低字节在后如0x01 00 00 00,要转换成字符串00000001的形式,怎么弄,求大神相助

参考技术A

不知道你说的字节数组是不是也是字符串数组,如果是可以像下面这样处理:

 String[] strs = new String[]"01","00","00","00";
        StringBuilder builder = new StringBuilder();
        for(int i=strs.length-1;i>=0;i--)
            builder.append(strs[i]);
        
        System.out.println(builder.toString());

参考技术B byte数组从后往前转就行了:
private String byteArray2String(byte[] byteArray)
StringBuffer sb = new StringBuffer();
for(int i=byteArray.length-1; i>=0 ;i--)
System.out.println(i);
String str_temp = "" + (byteArray[i] & 0xFF);
if(str_temp.length()<2)
sb.append("0");

sb.append(str_temp);

return sb.toString().trim();
参考技术C 这个是所谓的BIG-ENDIAN、LITTLE-ENDIAN,是针对由多个字节组成的数据类型来说的。
比如int(32位,四个字节),
例:
int a = 0x05060708

在BIG-ENDIAN的情况下存放为:

字节号 0 1 2 3

数据 05 06 07 08

在LITTLE-ENDIAN的情况下存放为:

字节号 0 1 2 3

数据 08 07 06 05

而你所说的字节数组转字符串与这个没有关系。它只与字符编码相关(如UTF-8,等)本回答被提问者采纳

java中字节数组byte[]和字符(字符串)之间的转换

转自:http://blog.csdn.net/linlzk/article/details/6566124

Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的;

 

1、将字符转换成byte数组

     String  str = "罗长";
     byte[] sb = str.getBytes();

 

2、将byte数组转换成字符

     byte[] b={(byte)0xB8,(byte)0xDF,(byte)0xCB,(byte)0xD9}; 
     String str= new String (b);

 

3、为了方便字符的加减操作,通常以16进制字符替代普通字符与byte数组进行相互转换

 /**
  * 16进制的字符串表示转成字节数组
  *
  * @param hexString
  *            16进制格式的字符串
  * @return 转换后的字节数组
  **/
 public static byte[] toByteArray(String hexString) {
  if (StringUtils.isEmpty(hexString))
   throw new IllegalArgumentException("this hexString must not be empty");
 
  hexString = hexString.toLowerCase();
  final byte[] byteArray = new byte[hexString.length() / 2];
  int k = 0;
  for (int i = 0; i < byteArray.length; i++) {//因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先
   byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff);
   byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff);
   byteArray[i] = (byte) (high << 4 | low);
   k += 2;
  }
  return byteArray;
 }
 
 /**
  * 字节数组转成16进制表示格式的字符串
  *
  * @param byteArray
  *            需要转换的字节数组
  * @return 16进制表示格式的字符串
  **/
 public static String toHexString(byte[] byteArray) {
  if (byteArray == null || byteArray.length < 1)
   throw new IllegalArgumentException("this byteArray must not be null or empty");
 
  final StringBuilder hexString = new StringBuilder();
  for (int i = 0; i < byteArray.length; i++) {
   if ((byteArray[i] & 0xff) < 0x10)//0~F前面不零
    hexString.append("0");
   hexString.append(Integer.toHexString(0xFF & byteArray[i]));
  }
  return hexString.toString().toLowerCase();
 }












































以上是关于java将字节数组转换成string的主要内容,如果未能解决你的问题,请参考以下文章

java怎么将string转换成byte数组

如何把一个byte数组的数字转换成int

java里面byte数组和String字符串怎么转换

Delphi字节转换字节数组

C 字节数组转换成字符串

java中字节数组byte[]和字符(字符串)之间的转换