相关疑难解决方法(0)

从字节数组中读取C#中的C/C++数据结构

从byte []数组填充C#结构的最佳方法是什么,其中数据来自C/C++结构?C结构看起来像这样(我的C很生锈):

typedef OldStuff {
    CHAR Name[8];
    UInt32 User;
    CHAR Location[8];
    UInt32 TimeStamp;
    UInt32 Sequence;
    CHAR Tracking[16];
    CHAR Filler[12];
}
Run Code Online (Sandbox Code Playgroud)

并填写这样的东西:

[StructLayout(LayoutKind.Explicit, Size = 56, Pack = 1)]
public struct NewStuff
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    [FieldOffset(0)]
    public string Name;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(8)]
    public uint User;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
    [FieldOffset(12)]
    public string Location;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(20)]
    public uint TimeStamp;

    [MarshalAs(UnmanagedType.U4)]
    [FieldOffset(24)]
    public uint Sequence;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    [FieldOffset(28)]
    public string Tracking;
}
Run Code Online (Sandbox Code Playgroud)

什么是复制OldStuff到的最佳方式NewStuff,如果OldStuff作为byte []数组传递? …

.net c# marshalling data-structures

78
推荐指数
3
解决办法
5万
查看次数

如何将byte []数组加载到C#中的结构中?

考虑以下结构,其中两者的长度usernamepassword为17:

struct LoginPacket
{
    public int unk1;
    public string username;
    public string password;
}
Run Code Online (Sandbox Code Playgroud)

也是这个字节数组

00 00 00 00 6A 6D 32 6D 65 00 72 00 7A 76 72 00 98 FD 18 00 A0 68 65 72 65 49 73
70 61 73 73 00 00 00 00 00 FF FF 31 2E 30 30 2E 30 30 00 00 00 C7 9D 72 00 04 00
00 31 2E 31 30 2E 32 …
Run Code Online (Sandbox Code Playgroud)

.net c# struct bytearray

3
推荐指数
1
解决办法
1884
查看次数

标签 统计

.net ×2

c# ×2

bytearray ×1

data-structures ×1

marshalling ×1

struct ×1