0

我有一个小程序可以从文件加载或保存字节数组。在这个字节数组中包含一个字符串,例如:

byte[] header = new byte[64]; //the actual array is larger, but this is for explaining purposes only...
string savedString = Encoding.ASCII.GetString( header, 0, 64 );

因为我用来写入文件的字符串只有 5 个字符长,“savedString”加载为“string”等但是,在这种情况下,我不用担心,我只是添加了

.Trim();

Encoding.ASCII.GetString( header, 0, 64 );

但这仍然没有在加载时将字符串削减到正确的大小,所以我猜填充不是由空格组成的?

谢谢。

4

1 回答 1

1

字节数组最初用零填充,表示的字符是控制字符,而不是空白字符。尝试像这样专门修剪这些零字符:

savedString.Trim('\0');

例如:

byte[] header = new byte[64];
header[0] = (byte)'A';
string savedString = Encoding.ASCII.GetString(header, 0, 64);

var output1 = savedString.Trim();
Console.WriteLine("{0} ({1})", output1, output1.Length); // A□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ (64)
var output2 = savedString.Trim('\0');
Console.WriteLine("{0} ({1})", output2, output2.Length); // A (1)
于 2013-11-13T21:59:17.837 回答