所以我尝试取一个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。有人能告诉我现在我做错了什么吗?
发布于 2013-11-22 03:11:48
您所做的是将'1'或'0'减去具有ASCII值的49和48到0,从而导致49或48。
char bit = path.charAt(i);
answer = (answer << 1) | (bit - '0');https://stackoverflow.com/questions/20136296
复制相似问题