C#中固定长度的字符串或结构

我需要创建一个结构或一系列字符串,这些字符串是我正在处理的项目的固定长度。 目前它是用COBOL编写的,是一种通信应用程序。 它通过网络发送一个固定长度的记录,并收回一个固定长度的记录。 我想把它写成一个简单的结构,但到目前为止,我发现的最好的方法是使用string.padright将字符串终止符放在正确的位置。

我可以编写一个封装它的类并返回一个固定长度的字符串,但我希望找到一种简单的方法来填充结构并将其用作固定长度的记录。

编辑 –

固定长度记录用作URL中的参数,因此其http:\ somewebsite.com \ parseme?record =“firstname lastname address city state zip”。 我很确定我不必担心ascii转换为unicode,因为它在url中。 它比这大一点,传递的信息多于地址,大约30或35个字段。

作为答案,您应该能够使用正确大小的char数组,而无需编组。

此外,.net中的类和结构之间的差异是最小的。 类可以为结构时,结构不能为空。 否则他们的使用和function几乎完全相同。

最后,听起来你应该注意正在发送的字符的大小。 我假设(我知道,我知道)COBOL使用8位ASCII字符,而.net字符串将使用UTF-16编码字符集。 这意味着COBOL中的10个字符串是10个字节,但在.net中,相同的字符串是20个字节。

将MarshalAs标记添加到您的结构中。 这是一个例子:

 _ Public Structure OSVERSIONINFO Public dwOSVersionInfoSize As Integer Public dwMajorVersion As Integer Public dwMinorVersion As Integer Public dwBuildNumber As Integer Public dwPlatformId As Integer  _ Public szCSDVersion As String End Structure 

http://bytes.com/groups/net-vb/369711-defined-fixed-length-string-structure

您可以使用VB6 compat FixedLengthString类,但编写自己的类非常简单。

如果您需要解析和validation以及所有有趣的东西,您可能需要查看使用属性来注释和解析固定长度记录的 FileHelpers 。

FWIW,关于任何相对简单的事情(例如数据处理)我可能只是使用ToFixedLength()扩展方法,在写出记录时根据需要处理填充或截断。 对于任何更复杂的事情(如validation或解析),我将转向FileHelpers。