位掩码 0b1 解析回 int
Bitmask 0b1 parsing back to int
Java SDK 1.8 中有没有办法将 "0b1"
之类的字符串解析回其整数值?
我试过 Integer.parseInt
但失败了。
与此字符串相同的问题 "0b1111_1101"
?
也许 Eclipse.JDT 中有一些东西可以将其作为 java 表达式求值。
编辑:
为了提供更多关于我正在努力实现的目标的背景信息:
它与 Sharpen(Java 代码到 C# 的转换器)的修改有关,以便在有效的 C# int 声明中转换位掩码字符串声明(此位掩码表示法仍然不受 C# 管理)。
一个简单的解决方案是去掉前缀 "0b"
,用 ""
替换任何 "_"
,然后使用 Integer.parseInt(n, 2)
得到 int
值。
我尝试了 wero 解决方案和我自己的解决方案,最后我保留了我的解决方案,因为虽然不太复杂,但速度更快。不过,由于我在Java方面不是那么好,也许还有改进的余地。
public static String simplerRewriteBitMask(String token) {
String input = "0b1111_1111";
input = input.replace("0b", "");
input = input.replace("_", "");
return Integer.toString(Integer.parseInt(input, 2));
}
我的解决方案(改进了JoopEggen)
private static String rewriteBitMask(String token) {
int result = 0;
for (int i = 2; i < token.length(); ++i) {
char character = token.charAt(i);
if (character != '_') {
int bit = Character.digit(character, 2);
result = result << 1;
result |= bit;
}
}
return Integer.toString(result);
}
Java SDK 1.8 中有没有办法将 "0b1"
之类的字符串解析回其整数值?
我试过 Integer.parseInt
但失败了。
与此字符串相同的问题 "0b1111_1101"
?
也许 Eclipse.JDT 中有一些东西可以将其作为 java 表达式求值。
编辑:
为了提供更多关于我正在努力实现的目标的背景信息: 它与 Sharpen(Java 代码到 C# 的转换器)的修改有关,以便在有效的 C# int 声明中转换位掩码字符串声明(此位掩码表示法仍然不受 C# 管理)。
一个简单的解决方案是去掉前缀 "0b"
,用 ""
替换任何 "_"
,然后使用 Integer.parseInt(n, 2)
得到 int
值。
我尝试了 wero 解决方案和我自己的解决方案,最后我保留了我的解决方案,因为虽然不太复杂,但速度更快。不过,由于我在Java方面不是那么好,也许还有改进的余地。
public static String simplerRewriteBitMask(String token) {
String input = "0b1111_1111";
input = input.replace("0b", "");
input = input.replace("_", "");
return Integer.toString(Integer.parseInt(input, 2));
}
我的解决方案(改进了JoopEggen)
private static String rewriteBitMask(String token) {
int result = 0;
for (int i = 2; i < token.length(); ++i) {
char character = token.charAt(i);
if (character != '_') {
int bit = Character.digit(character, 2);
result = result << 1;
result |= bit;
}
}
return Integer.toString(result);
}