C# 中的帕斯卡字符串

本文关键字:字符串 帕斯卡 | 更新日期: 2023-09-27 18:36:24

我正在研究C#的音频库,并且正在研究WAVE文件格式的ATM。根据我正在使用的信息非常丰富的网站,WAVE使用Pascal风格的字符串。我已经在谷歌上搜索了 20 多分钟,只提出了一个 C 到 Pascal 转换器。

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

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

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

C# 中的帕斯卡字符串

好吧,

如果你正在使用BinaryReader这应该很容易。

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

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

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

如何在不手动指定编码的情况下获得 C# 中字符串的一致字节表示形式?