C# 字符串未正确加载到结构中
为简洁明了,结构和变量已被缩短并重命名 BinaryReader用于填充以下结构:C# 字符串未正确加载到结构中,c#,.net,struct,C#,.net,Struct,为简洁明了,结构和变量已被缩短并重命名 BinaryReader用于填充以下结构: [StructLayout(LayoutKind.Sequential, Size = 59, CharSet = CharSet.Ansi, Pack = 1)] public struct TheStruct { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)] public string MyFirstString; publi
[StructLayout(LayoutKind.Sequential, Size = 59, CharSet = CharSet.Ansi, Pack = 1)]
public struct TheStruct
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string MyFirstString;
public int MyInt;
public short MyShort;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string MyNextString;
public byte MyByte;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string MyLastString;
public double MyDouble;
}
读入数据后,除第一个成员MyFirstString外,所有变量都包含正确的信息。
MyFirstString只包含读取的四个字符中的前三个字符
这是什么原因造成的?如何纠正
感谢所有在过去发布过struct示例的人,他们为我提供了很大的帮助,但我似乎找不到任何能够准确解决此问题的方法。字符串以零结尾,因此只有
SizeConst-1
字符将被放置在结构中,后跟终止符
可以使用字符数组获取所有字符:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public char[] MyFirstString;
哇!工作完美。谢谢