【问题标题】:How to convert a string into 8-bit ascii in java?如何在java中将字符串转换为8位ascii?
【发布时间】:2016-02-25 03:52:48
【问题描述】:

我想将字符串text 转换为 8 位 ascii 数字,并尝试将它们存储在 ArrayList 中。

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]

【问题讨论】:

    标签: java binary ascii ascii-8bit


    【解决方案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    
    

    【讨论】:

    • 谢谢。但是,如果我想将数组列表中的 ascii 数字用作 int 用于其他目的,例如将其转换为 qpsk 符号信号,该怎么办。我需要它是一个 int 但不是一个字符串。
    • @Lihang.H 我修改了我认为现在更有趣的解决方案
    • @Adbelhak 谢谢你。只是有一个小问题。我可以在数组列表中使用二进制而不是十进制的 int 吗?
    • @Lihang.H 你的问题能再清楚一点吗?
    • 我是说是否可以将arraylist中的数字用作8位二进制数,因为我需要将它们中的每一个分解成四个2位二进制数,以便进一步使用我的项目。就像在数组列表 [01100001 01100010 01100011] 中表示文本“abc”。并且 arrarylist 中的数字是 int 但不是 string。我可以这样做吗?谢谢。
    【解决方案2】:
        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);
        }
    

    【讨论】:

      猜你喜欢
      • 2012-06-25
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 2017-06-10
      • 2013-08-20
      • 2015-08-06
      相关资源
      最近更新 更多