我正在尝试将字符串转换为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();
}
答案 0 :(得分:2)
您似乎希望使用UTF-16
编码的字符代替UTF-8
的(可能)默认值。所以,只需改变这一行
byte[] bytes= s.getBytes();
到
byte[] bytes= s.getBytes("UTF-16BE");
答案 1 :(得分:0)
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;
}
}