使用位移运算符时出错

时间:2014-11-03 06:56:11

标签: java

我使用以下代码将0和1的字符串转换为二进制并将其写入文件。

我在第4行遇到错误:

Code.java:56: error: not a statement
            nextByte << 1;

代码:

public void writeToFile(String binaryString, OutputStream os){
    int pos = 0;
    while(pos < binaryString.length()){
        byte nextByte = 0x00;
        for(int i=0;i<8 && pos+i < binaryString.length(); i++){
            nextByte << 1;
            nextByte += binaryString.charAt(pos+i)=='0'?0x0:0x1;
        }
        os.write(nextByte);
        pos+=8;
    }
}

2 个答案:

答案 0 :(得分:4)

您应该将操作符的结果分配给变量:

nextByte = nextByte << 1;

答案 1 :(得分:1)

位筛选运算符就像任何二元运算符一样 - 它们得到两个参数并返回结果。换句话说,nextByte << 1;不再是pos + 8的陈述。如果你想把它作为一个陈述,你应该对返回值做一些事情,例如,分配它,这就是我认为你应该做的事情:

nextByte = nextByte << 1;

或者更好的是,简写:

nextByte <<= 1;