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]中了
}
} |