[英]Converting bytearray containing NUL to string
到背景:我從MYSQL數據庫中獲得了一個byte []的字符串,如下所示:
s:12:"NUL*NUL_messages";
我想在Java中將其轉換為字符串:
String str = new String(sd);
但是現在該字符串僅包含10個字符:
s:12:"*_messages";
但是它必須具有12個字符,以便進行以下解析。 有人可以幫助我該怎么做,以便不刪除“ NUL”字節嗎?
字符串輸出中的NULL
表示代碼點為零的字符。 您的字符串等效於此:
String s = "\0*\0_messages";
在Java中, \\0
是不可打印的。 但是,字符串會保留它-如果您檢查字符串的長度,它是12,而不是10,盡管將字符串輸出到控制台時只打印了10個字符:
System.err.println(s.length());
System.err.println(s);
打印( 演示 )
12
*_messages
評論:這不適用於
serialized-php-parser
該解析器的問題在於它的parseString
方法(第156行)期望打印的字符串的長度與s:<length>:
構造中的字符數匹配。 由於聲明的<length>
為12,但實際長度僅為10,因此parseString
在175..176行的流中消耗了兩個額外的字符,破壞了其他所有內容。
如果您想繼續使用該解析器,請考慮在對字符串進行編碼之前,將'\\0'
字符替換為您不使用的其他可打印字符,例如下划線,然后將'\\0'
放回另一側的解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.