我有一个小程序,可以从文件中加载或保存字节数组。在这个字节数组中包含一个字符串,例如:
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”e.t.c. 但是,在这种情况下,我没有后顾之忧,我只是添加了
.Trim();
到
Encoding.ASCII.GetString( header, 0, 64 );
然而这仍然没有在加载时将字符串缩减到正确的大小,所以我猜测填充不是由空格组成的?
感谢。
答案 0 :(得分: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)