黑马程序员技术交流社区

标题: 数据类型转换 [打印本页]

作者: 花园农场    时间: 2014-6-10 17:31
标题: 数据类型转换
string  s = "EF256345";  (16进制数据)怎么转换成byte[] = {(byte)0xef,0x25,0x63,0x45};
作者: HF_Opticalix    时间: 2014-6-10 22:49
String类中的getBytes方法?
还要注意编码格式吧
作者: HF_Opticalix    时间: 2014-6-10 23:15
  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”太长可能需要分段

作者: 哇塞哇    时间: 2014-6-29 16:38
Integer.parseInt(str,16);
这句话的意是:把str转换成16进制吗?
作者: 花自凋零    时间: 2014-6-29 21:07
Integer.parseInt(str,16);
这句话的意是:把str转换成16进制

作者: EarlyHeart    时间: 2014-7-2 02:18
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]中了
                }
        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2