繁体   English   中英

如何将8位转换为16位?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM