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

Posted

技术标签:

【中文标题】将十进制转换为二进制,然后将二进制转换为未知格式?【英文标题】:Converting decimal to binary and then binary to unknown format? 【发布时间】:2013-10-28 03:10:57 【问题描述】:

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

【问题讨论】:

这是单个数字的基数 10 格式(十进制)。 您使用的是 Java 还是 C#? 我在 java 中工作,但也添加了 C# 标签,因为这是一个常见问题 未知格式是做什么用的?您需要进行转换,然后将格式化的输出发送到某处吗? 【参考方案1】:

试试这个

String s = "(" + (n >> 24 & 0xFF) + ", " + (n >> 16 & 0xFF)+ ", " + (n >> 8 & 0xFF)+ ", " + (n & 0xFF) + ")";

【讨论】:

是的,OP,这就是你所要求的(格式化为字符串)。 @Evgeniy 我无法理解您发布的答案。请帮助我如何使用它?【参考方案2】:

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

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

00000000 以 10 为底。00000010 以 10 为底。10000101 以 10 为底。

【讨论】:

以上是关于将十进制转换为二进制,然后将二进制转换为未知格式?的主要内容,如果未能解决你的问题,请参考以下文章

将二进制值转换为字符串并返回二进制?

在 sparksql 中以正确格式将字符串数据转换为十进制时出现问题

如何将十进制格式转换为数字格式

将字符串分成两半

如何将十六进制字符串转换为十六进制数字

16进制字符串如何转化16进制数值