java字符串转换为十六进制数组
可不可以把比如字符串"55010100AAFF69"转成十六进制0x55,0x01,0x01,0x00,0x00,0xAA,0xFF,0x69,后放入Byte数组......
可不可以把比如字符串 "55010100AAFF69" 转成十六进制 0x55, 0x01, 0x01, 0x00, 0x00, 0xAA, 0xFF, 0x69,后放入Byte数组...
展开
4个回答
展开全部
private Byte[] test(String s) {
int len = s== null ? 0 : s.length() / 2;
Byte[] bs = new Byte[len];
for ( int i = 0; i < len; i ++ ) {
String hex = s.substring(i*2, i*2+2);
int num = Integer.parseInt(hex, 16);
bs[i] = new Byte((byte)num);
}
return bs;
}
如果需要的是byte数组,那么直接将int强制转为byte就行了。如果直接用Byte的parse,需要处理异常。
追问
你这得到的数组里面是十进制的啊。。我想得到0x55, 0x01, 0x01, 0x00, 0x00, 0xAA, 0xFF形式的byte数组啊
追答
byte数组里面都是byte数值啊,你说的0x55什么的,只是byte数据的显示模式而已,在编译器里面如果查看变量值的话,选择“Show Hex Value”的选项查看就行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符串作为函数change的参数inputStr
byte[] change(String inputStr) {
byte[] result = new byte[inputStr.length() / 2];
for (int i = 0; i < inputStr.length() / 2; ++i)
result[i] = (byte)(Integer.parseInt(inputStr.substring(i * 2, i * 2 +2), 16) & 0xff);
return result;
}
byte[] change(String inputStr) {
byte[] result = new byte[inputStr.length() / 2];
for (int i = 0; i < inputStr.length() / 2; ++i)
result[i] = (byte)(Integer.parseInt(inputStr.substring(i * 2, i * 2 +2), 16) & 0xff);
return result;
}
追问
你这得到的数组里面是十进制的啊。。我想得到0x55, 0x01, 0x01, 0x00, 0x00, 0xAA, 0xFF形式的byte数组啊
追答
所谓的进制只有在显示出来给人看时才有意义,不管是0x55还是85存入byte中对电脑来说都是一样的,只有输出的时候才能看出差别。
比如你写:
byte a = 85;
System.out.println(”0x" + Integer.toString(a, 16));
那么输出的结果就是0x55。
反过来你写:
byte a = 0x55;
System.out.println(a);
那么输出的结果还是85。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Scanner;
String source="55010100AAFF69);
sc=new Scanner(source);
byte [] Byte = new byte[10];
int i=0;
while (sc.hasNextByte(16)) Byte[i++]=sc.NextByte(16);
String source="55010100AAFF69);
sc=new Scanner(source);
byte [] Byte = new byte[10];
int i=0;
while (sc.hasNextByte(16)) Byte[i++]=sc.NextByte(16);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询