zoukankan      html  css  js  c++  java
  • 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();
     }

  • 相关阅读:
    在Windows .NET平台下使用Memcached
    Windows下配置使用MemCached
    B/S 网站技术选型
    HttpHandler与HttpModule的用处与区别
    TCP长连接与短连接的区别
    页和区 sql server
    聚集索引和非聚集索引的区别
    MicrosoftSQLServer中的锁模式
    我是如何在SQLServer中处理每天四亿三千万记录的
    datetime模块处理时间
  • 原文地址:https://www.cnblogs.com/yibao/p/7670177.html
Copyright © 2011-2022 走看看