簡體   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