将int转换为具有固定位数的二进制[重复]

Posted

技术标签:

【中文标题】将int转换为具有固定位数的二进制[重复]【英文标题】:Converting an int to a binary with a fixed number of bits [duplicate] 【发布时间】:2015-06-06 21:40:38 【问题描述】:

在java中获取整数的二进制表示为具有固定位数的二进制数的最简单方法是什么(例如,如果我想用5位转换3,那么结果将是00011)。在 matlab 中,我可以指定位数作为参数。

【问题讨论】:

Left padding a String with zeros 和Integer.toBinaryString(int) 可能有助于解决这个问题。 【参考方案1】:

将 n 转换为 numbOfBits 位:

public static String intToBinary (int n, int numOfBits) 
   String binary = "";
   for(int i = 0; i < numOfBits; ++i, n/=2) 
      switch (n % 2) 
         case 0:
            binary = "0" + binary;
         break;
         case 1:
            binary = "1" + binary;
         break;
      
   

   return binary;

【讨论】:

您忘记了上面代码中的 break; 语句。您将在每 0 之后添加 1 位。【参考方案2】:

如果你想将int 转换成它的二进制表示,你需要这样做:

String binaryIntInStr = Integer.toBinaryString(int);

如果您想获取int 的位数,您需要这样做:

int count = Integer.bitCount(int);

但是你不能将整数的二进制表示为具有固定位数的二进制数,例如,7 有 3 位,但你不能设置它的位数2 或 1。因为您不会从具有 2 位或 1 位计数的二进制表示中得到 7。

【讨论】:

第一行将二进制整数转换为十进制,然后将其解析为二进制。如果它是正确的,它不会做任何事情,但它是不正确的。 @EJP 我已经重新编辑了答案,是现在吗?【参考方案3】:

这是一个简单的方法:

String binaryString = Integer.toBinaryString(number);
binaryString = binaryString.substring(binaryString.length() - numBits);

其中 number 是要转换的整数,numBits 是您感兴趣的固定位数。

【讨论】:

但是...在这种情况下我有“字符串索引超出范围:-3”... 那么你可能想要: binaryString = binaryString.substring(binaryString.length() - numBits >= 0 ? binaryString.length() - numBits : 0);

以上是关于将int转换为具有固定位数的二进制[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .NET 中将双精度值转换为具有固定小数位数的小数类型值

将int转换为float,PHP中的两个十进制值[重复]

Javascript如何将十进制数转换为具有特定小数位数的字符串

将字符串形式的二进制转换为整数[重复]

将十六进制字符串转换为 Int [重复]

在Postgres中将十六进制字符串转换为bigint [重复]