2015-11-23 98 views
1

我想將一個字符串text轉換爲8位ascii數字,並嘗試將它們存儲在ArrayList中。如何將字符串轉換爲java中的8位ascii?

for (int i = 0; i < text.length(); i++) { 
     char c = text.charAt(i); 
     int ascii_dec = (int) c; 
     String ascii_str = Integer.toBinaryString(ascii_dec); 
     int ascii_bi = Integer.parseInt(ascii_str.toString()); 
     messageList.add(ascii_bi); 
} 

但輸出abc就像

[1100001,1100010,1100011] 

有沒有什麼辦法讓它像

[01100001,01100010,01100011] 

回答

1

試試這個完整的解決方案來解決這個問題。

public static void main(String[] args) { 
    ArrayList<String> messageList = new ArrayList<String>(); 
    String text = "abc"; 
    byte[] bytes = text.getBytes(); 
    StringBuilder binary = new StringBuilder(); 
    for (byte b : bytes) { 
     int val = b; 
     for (int i = 0; i < 8; i++) { 
      binary.append((val & 128) == 0 ? 0 : 1); 
      val <<= 1; 
     } 
     binary.append(' '); 
    } 
    messageList.add(binary.toString()); 

    System.out.println(Arrays.toString(bytes)); 

    for (String object : messageList) { 
     System.out.println("'" + text + "' to binary: " + object); 
    } 

    // this part below to help you to save 2-bit binary converted in int 
    // arraylist to store string 
    ArrayList<String> stringList = new ArrayList<String>(); 
    for (int i = 0; i < text.length(); i++) { 
     stringList.add(messageList.get(0).split(" ")[i]); 
    } 
    // arraylist to store int converted 
    ArrayList<Integer> intList = new ArrayList<Integer>(); 
    for (String str : stringList) { 
     for (int i = 0; i < str.length(); i += 2) { 
      intList.add(Integer.parseInt(str.substring(i, i + 2), 2)); 
      System.out.print(str.substring(i, i + 2) + " "); 
     } 

    } 
    System.out.println(); 
    // nowretrieve int in arraylist to convert in 2-binary if you wont 
    for (Integer integer : intList) { 
     System.out.print(integer + " "); 
    } 
} 

輸出是

[97, 98, 99] 
'abc' to binary: 01100001 01100010 01100011 
01 10 00 01 01 10 00 10 01 10 00 11 
1 2 0 1 1 2 0 2 1 2 0 3  
+0

謝謝。但是如果我想將ascii數字作爲int列表用於其他用途,比如將其轉換爲qpsk符號信號。我需要它作爲一個整數,但不是一個字符串。 –

+0

@ Lihang.H我修改解決方案,我認爲現在更interentante – Abdelhak

+0

@Adbelhak謝謝你。只是有一個小問題。我可以在數組列表中使用int而不是小數位嗎? –

0
String in = "abc"; 
    List<Integer> ascii = new ArrayList<>(); 

    for (char c : in.toCharArray()) { 
     ascii.add((int) c); 
     String intString = String.format("%08d", Integer.parseInt(Integer.toBinaryString((int) c))); 
     System.out.println(intString); 
    } 
相關問題