Java字节到字符串

标签 java string type-conversion byte datagram

所以我想将 DatagramPacket 的 getData() 函数返回的字节数组转换为字符串。我知道将整个字节数组转换为字符串的方法就是:

String str = new String(bytes);

但是,这会在末尾打印出空字符。所以如果字节数组是

[114, 101, 113, 117, 101, 115, 116, 0, 0, 0]

0 在控制台上打印出空框。所以我基本上只想打印出来:

[114, 101, 113, 117, 101, 115, 116]

所以我做了这个功能:

public void print(DatagramPacket d) {
        byte[] data = d.getData();
        for(int i=0; i< d.getLength(); i++) {
            if(data[i] != 0)
                System.out.println( data[i] );
        }
    }

但不幸的是,这是打印出实际的数字而不是字母。那么我如何将每个单独的字节转换为字符串并将其打印出来。或者,如果有另一种方法可以打印末尾不带空值的字节数组,那么也可以。

最佳答案

只需将每个非 0 的 int 转换为 char。您可以在打印中测试它:

System.out.println((char)data[i]);

关于Java字节到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112935/

相关文章:

java - 诱惑报告: Failed test written with Citrus displayed as ‘Broken’

java - 如何判断一个数字是否属于一个序列(决定误差幅度)?

java - 我在将 SearchView 与 RecyclerView 一起应用时遇到问题

java - 为什么我无法删除项目?

java - 如何显示html/rich格式的邮件?

string - 用C API提取python str,兼容python 2&3

c# - 有没有一种简单的方法可以在 C# 中更改字符串中的字符?

java - 不可转换类型错误

java - 如何在 Java 中的 "similar"3D vector 类之间进行转换?

c++ - 数组声明为 unsigned char 时的垃圾值