A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 花园农场 中级黑马   /  2014-6-10 17:31  /  1584 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

string  s = "EF256345";  (16进制数据)怎么转换成byte[] = {(byte)0xef,0x25,0x63,0x45};

5 个回复

倒序浏览
String类中的getBytes方法?
还要注意编码格式吧
回复 使用道具 举报
  1.         public static void main(String[] args)
  2.         {
  3.         String str = "EF";
  4.         int n = 0;
  5.         try
  6.         {
  7.                 n = Integer.parseInt(str,16);
  8.         }
  9.         catch(NumberFormatException e)
  10.         {
  11.                 System.out.println("NumberFormatException");
  12.         }
  13.         System.out.println(Integer.toHexString(n));
  14.         }
复制代码

又看了下 我觉得
利用Integer.parseInt()方法,将String型转为int型,再通过Inter.toHexString()化为十六进制,存入bytes数组。代码写了一部分,“EF256345”太长可能需要分段
回复 使用道具 举报
Integer.parseInt(str,16);
这句话的意是:把str转换成16进制吗?
回复 使用道具 举报
Integer.parseInt(str,16);
这句话的意是:把str转换成16进制
回复 使用道具 举报
java.math包中的BigInteger类封装了类似的方法,我们只需要在此基础上稍微再封装一下就好了
代码:
//此函数用于将传入的number与radix(进制基数)拆分为byte数组,如果此数的绝对值的二进制最高位为1则此数组的byte[0]元素会单独用来存储符号位(0或-1)
        public static byte[] toHexBytes(String number,int radix) {
                BigInteger bi = new BigInteger(number,radix);
                byte[] bs =bi.toByteArray();
                return bs;
        }
//主函数中测试:
public static void main(String[] args) {
               byte[] bs = toHexBytes("EF256345",16);
               for(byte b : bs){
                        System.out.print(Integer.toHexString(b)+"  ");
                        //输出:0(符号位)  ffffffef(这里因为0xef的二进制最高位是1,被认为是符号位-1故打印出      ffffffef但是存储的二进制位没有问题)  25  63  45
                         //0xef,0x25,0x63,0x45被存储在了bs[1]~bs[4]中了
                }
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马