Java中的填充位表示

时间:2013-11-10 18:52:04

标签: bit-manipulation

我有一个ASCII编码的字符串,看起来像3030.ascii字符串中的每个字符都需要转换为4位序列并连接在一起形成一个16位序列,带有4位填充。

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

(为了便于阅读而添加了空格)。

我知道我们可以将每个字符转换为一个字节,然后执行String格式操作以将二进制表示形式作为字符串。但我想保留二进制格式,因为我想对它进行进一步的屏蔽。

有没有办法在java中获取这个字节输出?

1 个答案:

答案 0 :(得分: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;

}

通常的警告:可能或可能不起作用,可能会做一些与您实际想要的不同的事情。