0

我正在使用一个 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)让它在我的应用程序中使用它。谁能帮我告诉我这是哪种格式?

4

2 回答 2

3

尝试这个

String s = "(" + (n >> 24 & 0xFF) + ", " + (n >> 16 & 0xFF)+ ", " + (n >> 8 & 0xFF)+ ", " + (n & 0xFF) + ")";
于 2013-10-28T03:16:56.803 回答
2

首先,以 2 为底的 645 是 1010000101。(由于某种原因,您的代码给出了不正确的结果)。

一旦你意识到这一点,我认为很容易看到“未知格式”可以通过简单地将二进制值分解为 8 位块(在必要时在开头添加 0)来提供中间二进制格式,然后将每个块(字节)转换为十进制(以 10 为底)。

00000000以 10 为底数为 0。00000010以 10 为底数为 2。10000101以 10 为底数为 133。

于 2013-10-28T03:15:57.847 回答