黑马程序员技术交流社区
标题:
数据类型转换
[打印本页]
作者:
花园农场
时间:
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
public static void main(String[] args)
{
String str = "EF";
int n = 0;
try
{
n = Integer.parseInt(str,16);
}
catch(NumberFormatException e)
{
System.out.println("NumberFormatException");
}
System.out.println(Integer.toHexString(n));
}
复制代码
又看了下 我觉得
利用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