java中如何将二进制字符串转换为十六进制并通过Uart端口发送
我有一个二进制字符串,看起来像11001111 0001111 11111111,我想把它转换成十六进制,然后通过Uart发送到Arduino。 如何将每个8位转换为十六进制而不获取有符号值,因为字节数据类型不支持大于128的值 我正在这样做java中如何将二进制字符串转换为十六进制并通过Uart端口发送,java,string,hex,byte,Java,String,Hex,Byte,我有一个二进制字符串,看起来像11001111 0001111 11111111,我想把它转换成十六进制,然后通过Uart发送到Arduino。 如何将每个8位转换为十六进制而不获取有符号值,因为字节数据类型不支持大于128的值 我正在这样做 string b = "110011110001111111111111" byte[] bval = new BigInteger(b, 2).toByteArray(); 预期产出:cf1fff 由于所有这些位都对应于数据中的某些数据更改,因此会改变
string b = "110011110001111111111111"
byte[] bval = new BigInteger(b, 2).toByteArray();
预期产出:cf1fff
由于所有这些位都对应于数据中的某些数据更改,因此会改变接收器端的行为。
请告诉我哪里错了 对于此字符串=110010001010000000100000000000000000000000000,我收到数字格式异常。如何解决此问题?如果您的数字非常高/大,请将int更改为long或大整数。但我对十六进制字符串={c89484000000}有一个疑问;字节数组输出为={99,56,57,52,56,52,48,48,48};对于这个二进制字符串=“110010001010000000100000000000000000000000000”,因此我在接收端得到了错误的值。请将数组和int变量更改为long。问题是getBytes()为字符串t中的每个字符提供ASCII值。我不想,我想发送十六进制,因为它是
String b = "110011110001111111111111";
int decimal=Integer.parseInt(b,2);
String t = Integer.toHexString(decimal);
byte[] bval = t.getBytes();