Java中从字符到二进制到十六进制以及向后
为了解释我的问题,让我先解释一下我想做什么Java中从字符到二进制到十六进制以及向后,java,arrays,string,binary,hex,Java,Arrays,String,Binary,Hex,为了解释我的问题,让我先解释一下我想做什么 这里有一个示例字符串:“12345678XA3VLX4321” 我需要将其转换为二进制,输出:“00110001 00110010 00110011 00110100 00110101 00110110 00110111 00111000 01011000 0100001 00110011 01010110 01001100 01011000 00110100 00110011 00110010 00110001” 现在我需要切割每个8位二进制序列的前
然后我有了“110001 110010 110011 110100 110101 110110 110111 111000 011000 000001 110011 010110 001100 011000 110100 110011 110010 110001”
String input = txtInput.getText();
byte[] bytes = input.getBytes();
StringBuilder binary = new StringBuilder();
// generate Binary sequence out of characters
for (byte b : bytes) {
int val = b;
for (int i = 0; i < 8; i++) {
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
String[] _arr = binary.toString().split("\\s"); // splits a string into an array, splitting by spaces
// delete first two characters of every binary sequence
for(int i = 0; i < _arr.length; i++) {
_arr[i] = _arr[i].substring(2, 8);
}
String convertedArrayWithSpaces = convertArrayToStringMethodWithEmptySpace(_arr).toString(); // convert the array to a string
convertedArrayWithSpaces = convertedArrayWithSpaces + "100000 100000"; // append two spaces at the end of the string
String[] _arrFinal = convertedArrayWithSpaces.toString().split("\\s"); // splits a string into an array, splitting by spaces
String convertedArrayFinal = convertArrayToStringMethod(_arrFinal); // converts an array to a string without spaces
BigInteger b = new BigInteger(convertedArrayFinal, 2); // convert binary sequence to hex
String finalResult = "da" + b.toString(); // add "da" to the string
String input=txtInput.getText();
byte[]bytes=input.getBytes();
StringBuilder二进制文件=新的StringBuilder();
//用字符生成二进制序列
for(字节b:字节){
int val=b;
对于(int i=0;i<8;i++){
binary.append((val&128)==0?0:1);
val字母在原始序列中总是处于相同的位置吗?因为所有这些都是ASCII码,所以您只需要8位中的7位,这意味着11
和10
永远不能是缺少的正确前缀。而且,由于表示数字的二进制总是以00
开头,因此您需要00
其中numBER是和01
,其中字母应该是。如果输入字符串可以是在任何位置由数字和字母组成的任何字符串,那么您尝试执行的操作是不可能的。例如“1”
表示为字节的是00110001
和“q"
是0111001
,因此,当您仅切断前两位时,您无法再像您已经发现的那样区分这两个值。感谢您的快速回复!文本和数字始终位于同一位置,因此可以按照您的建议解决此问题。非常感谢!字母总是在s中吗ame在原始序列中的位置?因为所有这些都是ASCII码,所以您只需要8位中的7位,这意味着11
和10
永远不能是缺少的正确前缀。而且,由于表示数字的二进制码总是以00
开头,因此您需要00
数字所在的位置和01
数字所在的位置字母应该是。如果输入字符串可以是在任何位置由数字和字母组成的任何字符串,则您尝试执行的操作是不可能的。例如,以字节表示的“1”
是00110001
和“q”
是0111001
,因此,当您仅切断前两位时,您将无法再像您已经发现的那样区分这两个值。感谢您的快速回复!文本和数字始终位于同一位置,因此可以按照您的建议解决此问题。非常感谢!