将十进制转换为二进制,然后将二进制转换为未知格式?
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 为底。
【讨论】:
以上是关于将十进制转换为二进制,然后将二进制转换为未知格式?的主要内容,如果未能解决你的问题,请参考以下文章