繁体   English   中英

Marshaling ac char数组[128]到c#

[英]Marshaling a c char array[128] to c#

简单的问题,但我找不到一个直接的答案:我希望在我的C结构中有一个128字节的字符数组。 我在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;
}

由于char是c#中的2个字节,因此SizeConst应该是128或256.两者似乎都工作正常,但我知道其中只有一个是正确的。

大小为64,因为64个2字节的数量与128个1字节的数量相同。

我将使用字节数组进行编组,否则你将不得不忍受拆分值以获得C字符(单字节)。

如果你想编组一个C#char数组(不确定你想要的原因)那么C#端的大小将被设置为64。

但是,您应该编组一个字节数组(大小为128),然后使用相应的Text.Encoding调用将字节数组转换为.net字符串(假设您需要一个字符串)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM