自己写个helper方法嘛。字符串中是16进制的吧?每次取2个字符,第一个字符换算成十进制的值乘以16加上后一个字符换算成十进制的值,重复5次不就好了?注意:如果只是为了取得一般意义上的字符串的byte序列,String类有个方法getBytes()。

解决方案 »

  1.   

    随手写的例子,仅供参考:public class TestHex2Byte {
      
      public static void main(String[] args) {
        System.out.println("Hex String: 0421154010");
        showBytes("0421154010");
      }  private static byte[] showBytes(String str) {
        int strLen = str.length();
        if (strLen%2!=0) {
          System.out.println("不是合法的字符串");
          return new byte[0];
        }
        System.out.println("Bytes: ");
        byte[] res = new byte[strLen/2];
        for (int i = 0; i < strLen/2; i++) {
          res[i] = (byte)(getDecimal(str.charAt(i*2))*16+getDecimal(str.charAt(i*2+1)));
          System.out.print(res[i]+" ");
        }
        return res;
      } 
      
      private static int getDecimal(char c) {
        switch (c) {
          case '0': return 0;
          case '1': return 1;
          case '2': return 2;
          case '3': return 3;
          case '4': return 4;
          case '5': return 5;
          case '6': return 6;
          case '7': return 7;
          case '8': return 8;
          case '9': return 9;
          case 'a': case 'A': return 10;
          case 'b': case 'B': return 11;
          case 'c': case 'C': return 12;
          case 'd': case 'D': return 13;
          case 'e': case 'E': return 14;
          case 'f': case 'F': return 15;
        }
        return 0;
      }}
      

  2.   

    其实还有一个Java自带的方法用于将字符串转换成数值:byte b = Byte.parseByte("9A", 16); // 16指明前面的字符串是十六进制的。// 只是我个人比较喜欢自己处理这些底层点的小问题,觉得很有意思。