0

私は次の構造体を持っています:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct cAuthLogonChallenge
{
    byte cmd;
    byte error;
    fixed byte name[4];

    public cAuthLogonChallenge()
    {
        cmd = 0x04;
        error = 0x00;
        name = ???
    }
}

nameはnullで終了するASCII文字列であると想定されており、VisualStudioはそれと対話するための私のアイデアをすべて拒否しています。どうすれば設定できますか?

4

2 に答える 2

1

とった:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
unsafe struct cAuthLogonChallenge
{
    byte cmd;
    byte error;
    fixed byte name[4];

    public cAuthLogonChallenge(byte dummy)
    {
        cmd = 0x04;
        error = 0x00;
        fixed (byte* p = this.name)
        {
            *p = (byte)'J';
            *(p + 1) = (byte)'o';
            *(p + 2) = (byte)'n';
            *(p + 3) = 0;
        }
    }
}
于 2010-05-31T08:11:51.490 に答える
1

固定ステートメントを使用するには、安全でないモードに切り替える必要があります

http://msdn.microsoft.com/en-us/library/f58wzh21%28v=VS.80%29.aspx

http://msdn.microsoft.com/en-us/library/chfa2zb8%28v=VS.80%29.aspx

http://msdn.microsoft.com/en-us/library/zycewsya%28v=VS.80%29.aspx

構造体の定義を次のように変更するunsafe struct ...と、c /c++のように配列を初期化できます。

于 2010-05-31T07:16:15.640 に答える