0

3030 のような ASCII エンコード文字列があります。ASCII 文字列の各文字を 4 ビット シーケンスに変換し、連結して 16 ビット シーケンスを形成し、4 ビット パディングを追加する必要があります。

For eg: 3030 should be converted into 
0011 0000 0011 0000 

(読みやすくするためにスペースが追加されています)。

各文字をバイトにキャストし、文字列形式の操作を実行して、バイナリ表現を文字列として取得できることを認識しています。しかし、バイナリ形式をさらにマスキングしたいので、バイナリ形式を保持したいと思います。

Javaでこのバイト出力を取得する方法はありますか?

4

1 に答える 1

0
byte chartodecimal(char x) {
    if(x >= '0' || x <= '9') { return (byte)((byte)x - (byte)'0'); }
    throw new Exception("Not a decimal digit");
}

byte[] tobcd(String s) {
    int result_len = (s.length() + 1) / 2;
    byte[] result = new byte[result_len];
    for (int i = s.length() % 2, j = 0; i < result_len; i++, j += 2) {
        result[i] = (byte)(chartodecimal(s[j]) << 4 | chartodecimal(s[j + 1]));
    }
    return result;

}

通常の警告: 機能する場合と機能しない場合があり、実際に必要なものとは異なることを行う場合があります。

于 2013-11-10T19:09:34.840 に答える