我正在修改的代码中有整数和整数,它们使用代码中的十进制数字表示二进制文字,例如
int intDigitsAsBits = 1101; // integer "representing" 13 to coder
int intDigitsAsBitsB = 1000; // integer "representing" 8 to coder
背景:我正在使用Java方言进行Java 7之前的版本(处理),例如不提供0b0000样式的二进制文字。我正在这种情况下开发本机Java 8库-而不是处理代码。 Processing的界面主要用于早期代码语言学习者社区,因此在键入时可以理解的可视形式近似二进制。
例如,我希望能够将这些伪二进制整数值即时转换为它们的本机表示形式。
int intDigitsAsBits = 1101;
int intNative = someUnDecimalMethod(intDigitsAsBits);
System.out.println(intNative); // "13"
我已经有一种方法,可以使用中间转换为String
,然后使用radix = 2用Integer.parseInt()
转换回来。
int intDigitsAsBits = 1101;
String iString = intDigitsAsBits + "";
int intBinaryValue = Integer.parseInt(iString, 2);
System.out.println(intBinaryValue); // "13"
是否存在Java解决方案,可以将数字或位格式的int或Integer转换为本机表示形式-无,使用String作为中间值?
我对效率特别感兴趣,但是欢迎所有解决方案。
答案 0 :(得分:2)
int result = 0;
int i= 0;
while (bits != 0) {
result |= (bits % 10) << i;
i++;
bits /= 10;
}
答案 1 :(得分:1)
好,要将数字位直接转换为本机int形式,可以执行以下操作:
int count =0;
int digitsAsBits = 1101;
int result =0;
while(digitsAsBits !=0){
int lastdigit = digitsAsBits%10;
result += lastdigit*Math.pow(2, count);
count++;
digitsAsBits = digitsAsBits/10;
}