java - 您可以将包含不可打印字符的字节数组转换为字符串吗?

标签 java

如果字节数组包含非ascii字符,是否会创建字符串?

String s  = new String(byte[] b)

最佳答案

将单个字节解释为 ascii 字符,很容易拒绝小于 32 和大于 126 的值。

public static boolean isPrintableAscii(byte value)
{
    return (value > 32 ) && (value < 127);
}

public static String readableText(byte[] buffer, int offset, int bufferSize)
{
    StringBuilder builder = new StringBuilder();
    for( int index = 0; index < bufferSize; ++index)
    {
        byte current = buffer[offset+index];
        if( isPrintableAscii(current))
        {
            builder.append((char)current);
        }
        else
        {
            builder.append('.');
        }
    }

    return builder.toString();
}

当遇到不可打印的字节时,我就打印一个'.'由十六进制转储实用程序使用了很长时间。

关于java - 您可以将包含不可打印字符的字节数组转换为字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060860/

相关文章:

java - 多线程文件传输到 FTP 服务器

java - 方法引用的通用功能接口(interface)的方法签名

java - 如何在 Java 中终止容器创建的线程

java - GameOfLife IndexOutOfBounds 错误处理

java - 根据未知数量的键对对象列表进行排序

java - 正确的 FQDN Uri 通过 apache commons UrlValidator 无效

java - 无状态 EJB 和集群

java - liferay 7.2 中的 Spring Autowiring 注释

java - java的继承与多态

java - 显示/隐藏丰富的列 :extendedDataTable (RichFaces 4. x)