在ASCIIEncoding.GetString(byte [])之后表示空字节的字符是什么?

时间:2010-03-15 18:57:35

标签: c# .net string bytearray

我有一个字节数组,在它的末尾可能有也可能没有空字节。将它转换为字符串后,我最后有一堆空白。我尝试使用Trim()来摆脱它,但它不起作用。如何在转换字节数组后删除字符串末尾的所有空格?

我写这是C#。

2 个答案:

答案 0 :(得分:6)

Trim()在您的情况下不起作用,因为它只删除空格,制表符和换行符AFAIK。它不会删除'\ 0'字符。你也可以使用这样的东西:

byte [] bts = ...;

string result = Encoding.ASCII.GetString(bts).TrimEnd('\ 0');

答案 1 :(得分:2)

public string TrimNulls(byte[] data)
{
    int rOffset = data.Length - 1;

    for(int i = data.Length - 1; i >= 0; i--)
    {
        rOffset = i;

        if(data[i] != (byte)0) break;            
    }

    return System.Text.Encoding.ASCII.GetString(data, 0, rOffset + 1);
}

为了完全披露,我想非常清楚, 只能对ASCII可靠地工作。对于任何多字节编码,这将废弃床。