我有一个ASCII编码的字符串,看起来像3030.ascii字符串中的每个字符都需要转换为4位序列并连接在一起形成一个16位序列,带有4位填充。
For eg: 3030 should be converted into
0011 0000 0011 0000
(为了便于阅读而添加了空格)。
我知道我们可以将每个字符转换为一个字节,然后执行String格式操作以将二进制表示形式作为字符串。但我想保留二进制格式,因为我想对它进行进一步的屏蔽。
有没有办法在java中获取这个字节输出?
答案 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;
}
通常的警告:可能或可能不起作用,可能会做一些与您实际想要的不同的事情。