将十进制转换为二进制,然后二进制转换为未知格式?

时间:2013-10-28 03:10:57

标签: c# java number-formatting

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

2 个答案:

答案 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。