0

所以我试图获取一个 1 和 0 的字符串,并将其转换为它的十进制等效值,就好像该字符串是一个位字符串一样。我对Java比较陌生,所以我先用Python写了这个函数,如下所示。它完美地工作。

def stringToBitString(bs):
    #
    # bs = "10101"
    #
    ans = 0       # 32 bits of 0

    for bit in bs:
        ans = (ans << 1) | (ord(bit) - ord('0'))
    return (and)

但是,在尝试将其翻译成 Java 时,我想出了这个。

public int toInt(String path) {

    int answer = 0;

    for(int i = 0; i < path.length(); i++) {

        int bit = path.charAt(i);
        answer = (answer << 1) | (bit - 0);
    }
    return answer;        
}

这种方法确实给了我一个 int,但以 ASCII 的形式。例如 stringToBitString("1") 产生 1,而 toInt("1") 产生 48。谁能告诉我此时我做错了什么?

4

1 回答 1

0

您正在做的是减去'1'or'0'具有 ASCII值4948导致or 04948

char bit = path.charAt(i);
answer = (answer << 1) | (bit - '0');
于 2013-11-22T03:11:48.903 回答