使用类似这样的东西将字节数组转换为字符串
byte[] src = new byte[5] { 65, 66, 67, 0, 0 };
string s = System.Text.Encoding.Default.GetString(src);
(另见:How to convert byte[] to string?)
但是,如果字节数组在某些位置包含0(例如在结尾处,因为预期的字符串不够长),结果字符串也包含' \ 0'字符。他们甚至算作字符串.Length。以上示例的结果是" ABC \ 0 \ 0",长度为5。
这样的字符串是可打印的,但是在这样的字符串之后,Console.Writeline似乎存在换行问题。并将此字符串与" real"进行比较。字符串可能有意想不到的结果,因为"隐藏" ' \ 0'字符(" ABC"!=" ABC \ 0 \ 0")。
由于我目前仅将其用于调试输出,我的解决方法是Trim()尾随' \ 0'字符。有没有更好的方法来摆脱这个,可能是一个不同的编码器或不同的转换方法?
答案 0 :(得分:4)
那么,为什么不在转换为字符串之前简单地将这些Request.ServerVariables
从数组中抛出?
C#中的字符串不是以空值终止的,因此没有理由保留任何\0
。
例如,使用Linq:
\0