Как мне преобразовать стек логических значений в байтовое значение? - PullRequest
0 голосов
/ 12 февраля 2019

В этой задаче я беру символы «0» и «1». Я также могу взять строки типа «0011001». Они хранятся в буфере, но мне нужно изменить значения true и false на байты, такие как 1 и 0.

{Мне нужна помощь в методе OutputByte.}

public class BitOutputStream {      
    Stack<Boolean> buffer;
    OutputStream os;

    BitOutputStream(OutputStream file) {
        buffer = new Stack<Boolean>();
        os = file;
    }

    public void WriteBit(char bit) throws IOException {
        if (bit == '0') buffer.push(false);    
        else buffer.push(true);
    }    

    //Needs to take care both of the scenarios
    public void WriteBit(String bit) throws IOException {
        if (bit == "0") buffer.push(false);    
        else buffer.push(true);    
        OutputByte();
    }    

    //When the close() method is called, output whatever bits are in the buffer (even if less than 8).
    public void close() throws IOException {    
        os.close();    
    }

    //Turning boolean buffer to byte
    private void OutputByte() {
    }
}

1 Ответ

0 голосов
/ 12 февраля 2019
byte total = 0;
int multiplier = 0;

while(!buffer.empty()) {
    total += buffer.pop() ? Math.pow(2, multiplier) : 0;
    multiplier++;
}

System.out.println(total);
...