我使用以下代码将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;
}
}
答案 0 :(得分:4)
您应该将操作符的结果分配给变量:
nextByte = nextByte << 1;
答案 1 :(得分:1)
位筛选运算符就像任何二元运算符一样 - 它们得到两个参数并返回结果。换句话说,nextByte << 1;
不再是pos + 8
的陈述。如果你想把它作为一个陈述,你应该对返回值做一些事情,例如,分配它,这就是我认为你应该做的事情:
nextByte = nextByte << 1;
或者更好的是,简写:
nextByte <<= 1;