简单的问题,但我找不到直接的答案:我想在我的 C 结构中有一个 128 字节的 char 数组。我在 64 位 Windows 下运行它。我想使用以下命令将其编码到 c#:
C 代码:
typedef struct s_parameterStuct
{
int count;
char name[ 128 ];
} parameterStruct;
C# 代码:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class parameterStuct
{
public int count;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] name;
}
由于在 C# 中一个 char 是 2 个字节,SizeConst 应该是 128 还是 256。两者似乎都可以正常工作,但我知道只有一个是正确的。
最佳答案
大小为 64,因为 64 个 2 字节数量与 128 个 1 字节数量的大小相同。
我会使用字节数组进行编码(marshal)处理,否则您将不得不忍受拆分值以获得 C 字符(单字节)。
关于c# - 将 c 字符数组 [128] 编码到 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044559/