位掩码0b1解析回int

时间:2016-02-07 10:56:28

标签: java bitmask

Java SDK 1.8 中是否有办法将"0b1"之类的字符串解析回其整数值?

我尝试使用Integer.parseInt,但失败了。

与此字符串"0b1111_1101"相同的问题?

也许在Eclipse.JDT中有一些东西可以将它作为java表达式进行评估。

修改

为了更多地介绍一下我想要实现的目标: 它与修改Sharpen(Java代码转换为C#)有关,以便在有效的C#int声明中转换位掩码字符串声明(此位掩码表示法仍然不由C#管理)。

2 个答案:

答案 0 :(得分:2)

一个简单的解决方案是删除前缀"0b",将"_"替换为"",然后使用Integer.parseInt(n, 2)获取int

答案 1 :(得分:1)

我尝试了wero解决方案和我自己的解决方案,最后我保留了我的解决方案,因为虽然不是太复杂,但速度更快。但是,由于我在Java方面不是那么好,也许还有改进的余地。

<强> wero solution

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);
}