C#中的Pascal字符串

时间:2012-06-07 04:47:46

标签: c# string pascal c-strings

我正在使用C#中的音频库,我正在使用WAVE文件格式的ATM。根据我正在使用的信息量很大的website,WAVE使用Pascal样式字符串。我一直在谷歌搜索超过20分钟,只有一个C to Pascal converter

我知道Pascal和C字符串如何比较(C代码):

char *cStr = "Test"; // C - produces {'T', 'e', 's', 't', '\0'}
char pascal[] = {4, 'T', 'e', 's', 't'}; // Pascal

如果有帮助,我使用System.IO.BinaryReader来解析文件。

2 个答案:

答案 0 :(得分:2)

如果你使用的是BinaryReader,这应该很容易。

var size = rd.ReadByte();
var body = rd.ReadBytes(size);
var text = System.Text.Encoding.ASCII.GetString(body);

答案 1 :(得分:1)

Pascal字符串背后的基本思想是第一个字节保存字符串长度,后续字节保存字符串数据(将字符串限制为255个字符)。

我将使用字节数组并使用C#中的字符串到字节转换方法来填充它。请参阅下面问题的已接受答案,以了解如何将C#字符串转换为字节数组,并记住将所有1个数组位置偏移以允许第0个字节的空间,保持字符串长度,并记住填充第0个字节实际的字符串长度。检查输入字符串长度以确保它不超过255个字符: - )

How do I get a consistent byte representation of strings in C# without manually specifying an encoding?