我正在使用一个API,它会产生32位(4字节)数据。我需要将此值解码为另一种格式才能使用它。
数据的一个例子可能是:
645 --> (00000000 00000000 00000010 10000101) --> (0, 0, 2, 133)
我将从API收到645,我需要首先转换为二进制格式,然后转换为我无法理解的未知格式。我可以使用以下代码将“645”转换为二进制格式:
public static void toBinary(String value){
int i = Integer.parseInt(value);
System.out.println(Integer.toBinaryString(i));
}
输出:100000000000000000
但是如何让它(0,0,2,133)
在我的应用程序中使用它。有人可以帮我告诉我这是哪种格式吗?
答案 0 :(得分:3)
试试这个
String s = "(" + (n >> 24 & 0xFF) + ", " + (n >> 16 & 0xFF)+ ", " + (n >> 8 & 0xFF)+ ", " + (n & 0xFF) + ")";
答案 1 :(得分:2)
首先,基数2中的645是1010000101.(由于某种原因,您的代码给出了错误的结果)。
一旦你意识到这一点,我认为通过简单地将二进制值分成8位的块(在必要时在开头添加0)来达到“未知格式”是相当简单的,以给出中间二进制格式,然后将每个块(字节)转换为十进制(基数为10)。
基数10中的 00000000
为0.基数10中的00000010
为2.基数10中的10000101
为133。