Java 从十六进制/二进制序列中获取每一位
我想将变量Java 从十六进制/二进制序列中获取每一位,java,Java,我想将变量mesaj作为int(十六进制或二进制)提供给程序,但是.getBytes()对整数不起作用。我能用什么 public static void main(String[] args) { int crc = 0xFFFF; // 65535 sau 111...de 16 ori int polinom = 0x1021; // 0001 0000 0010 0001 (0, 5, 12) // byte[] tes
mesaj
作为int(十六进制或二进制)提供给程序,但是.getBytes()对整数不起作用。我能用什么
public static void main(String[] args) {
int crc = 0xFFFF; // 65535 sau 111...de 16 ori
int polinom = 0x1021; // 0001 0000 0010 0001 (0, 5, 12)
// byte[] testBytes = "123456789".getBytes("ASCII");
String mesaj = "1111111";// I want this to be an integer
byte[] bytes = mesaj.getBytes();//this won't work on an int
for (int n = 0; n < bytes.length; n++) {
byte b = bytes[n];//iau byte cu byte
for (int i = 0; i < 8; i++) {//iau bit cu bit al fiecarui byte
//convertesc in sir de biti, si iau numai bitii care sunt 1
boolean bit = ((b >> (7 - i) & 1) == 1);
//la fel si fiecare bit al crc-ului curent
boolean c15 = ((crc >> 15 & 1) == 1);
crc <<= 1;
if (c15 ^ bit) {//daca XOR pe c15 si bit da 1
crc ^= polinom;
}
}
}
crc &= 0xffff;
System.out.println("Hexa: " + Integer.toString(crc, 16));
System.out.println("Zecimal: " + Integer.toString(crc));
System.out.println("Binar: " + Integer.toBinaryString(crc));
}
publicstaticvoidmain(字符串[]args){
int crc=0xFFFF;//65535 sau 111…de 16 ori
int polinom=0x1021;//0001 0000 0010 0001(0,5,12)
//字节[]testBytes=“123456789”.getBytes(“ASCII”);
String mesaj=“1111111”//我希望它是一个整数
byte[]bytes=mesaj.getBytes();//这在int上不起作用
for(int n=0;n>(7-i)和1)==1);
//这是一个很好的例子
布尔值c15=((crc>>15&1)==1);
crc您可能希望实际解析为int
整数,例如Integer.parseInt(mesaj,2)
或Integer.parseInt(hex,16)
十六进制数。您可能希望实际解析为int
整数,例如Integer.parseInt(mesaj,2)
或Integer.parseInt(hex,16)
表示十六进制数。您可能希望实际解析为int
,例如Integer.parseInt(mesaj,2)
或Integer.parseInt(hex,16)
表示十六进制数。您可能希望实际解析为int
,例如Integer.parseInt(mesaj,2)
或Integer.parseInt(hex,16)
用于十六进制数。尝试使用java.math.biginger而不是int。这可能会得到您想要的结果。然后我会有一个像“1010100111”这样的大数字,但如何像在我的程序中那样从中获得每个字节?尝试使用java.math.biginger而不是int。这可能会得到您想要的结果。然后我会有一个像“1010100111”这样的大数字但是我怎样才能像在我的程序中那样从中得到每个字节呢?试着用java.math.biginger代替int。这可能会得到你想要的结果。然后我会得到一个像“1010100111”这样的大数字但是我怎样才能像在我的程序中那样从中得到每个字节呢?试着用java.math.biginger而不是int。这可能会得到你想要的。然后我会有一个像“1010100111”这样的大数字,但是我怎样才能像在我的程序中那样从中得到每个字节呢?仍然不起作用。Integer.parseInt(mesaj,2)将101转换为5,但我的程序将其视为5,而不是101,因此它将使用ASCII码49、48、49而不是1、0、1。然后程序的其余部分出错,而不是转换部分。如果要从int
中提取位,则需要使用类似(x>>索引)的内容&1
从索引的第位获取0或1。仍然不起作用。Integer.parseInt(mesaj,2)将101转换为5,但我的程序将其视为5,而不是101,因此它将使用ASCII码49、48、49而不是1、0、1。然后程序的其余部分出错,而不是转换部分。如果要从int
中提取位,则需要使用类似(x>>索引)的内容&1
从索引的第位获取0或1。仍然不起作用。Integer.parseInt(mesaj,2)将101转换为5,但我的程序将其视为5,而不是101,因此它将使用ASCII码49、48、49而不是1、0、1。然后程序的其余部分出错,而不是转换部分。如果要从int
中提取位,则需要使用类似(x>>索引)的内容&1
从索引的第位获取0或1。仍然不起作用。Integer.parseInt(mesaj,2)将101转换为5,但我的程序将其视为5,而不是101,因此它将使用ASCII码49、48、49而不是1、0、1。然后程序的其余部分出错,而不是转换部分。如果要从int
中提取位,则需要使用类似(x>>索引)的内容&1
从索引的第位获取0或1。