2

バイト配列にASCII以外の文字が含まれている場合、文字列は作成されますか?

String s  = new String(byte[] b)
4

3 に答える 3

1

個々のバイトを 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();
}

印刷できないバイトに遭遇したときは、「.」を印刷するだけです。長い間、16 進ダンプ ユーティリティで使用されていました。

于 2014-04-14T18:17:24.523 に答える
0

new String (byte[] data, String charsetName)2番目のパラメーターを次のように渡すことを使用できますUS-ASCII

于 2012-06-16T04:38:23.210 に答える
-1

いいえ、失敗しません。ただし、文字列内の非ASCII文字を検出して削除する方法があります。ただし、非ASCII文字を含む文字列はまったく問題ありません。

于 2012-06-16T04:44:36.610 に答える