2012-06-16 64 views

回答

0

您可以使用new String (byte[] data, String charsetName)傳遞第二個參數作爲US-ASCII

+0

需要注意的是,當嘗試解釋* everything *時,如果給定的數據同時對可打印字符和原始二進制值進行編碼,則可能無法按預期行事 - 二進制值實際上可能會以最終隱藏某些前述內容的方式被錯誤解釋可打印的。 –

-1

不,它不會失敗。但是,有辦法檢測字符串中的非ASCII字符並將其刪除。但非ASCII字符的字符串非常好。

0

解讀各字節爲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(); 
} 

當遇到一個非打印字節,我剛打印「」使用十六進制轉儲實用程序的年齡。

相關問題