[英]How to Convert 8 bit to 16 bit?
我试图将一个字符串转换为1和0相当于String的每个字符的ASCII值,它是一种编码。 我的代码给了我8位结果,我需要每个字符16位结果,例如,如果我的输入字符串是1A,那么我得到0011000101000001但是期望的输出是00000000001100010000000001000001.我想要有8个额外的零来使它成为16位代码。 我不认为使用任何第三方方法。 请提出如何使其成为16位的建议。 同时分享您对是否可以将16位解码回1A的看法
try(FileReader f=new FileReader(myFile))
{
int i;
while((i=f.read())!=-1)
{
char c = (char)i;
String s = Character.toString(c);
byte[] bytes= s.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes)
{
int val = b;
for (int k = 0; k < 8; k++)
{
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
}
System.out.print(binary);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
您似乎希望以UTF-16
编码的字符而不是UTF-8
的(可能的)默认值。 所以,只需改变这一行
byte[] bytes= s.getBytes();
至
byte[] bytes= s.getBytes("UTF-16BE");
for (byte b : bytes)
{
int val = b;
for (int k = 0; k < 8; k++) binary.append(0);
for (int k = 0; k < 8; k++)
{
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.