所以我试图获取一个 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。谁能告诉我此时我做错了什么?