首页 > 解决方案 > 将字节数组数据读入对象的正确方法是什么

问题描述

所以我有这个看起来像这样的字节数组

[40, 0, 4, 0, 0, 0, 7, 69, 108, 121, 115, 105, 97, 110, 0, 0, 0, 0, 215, 90, 55, 255, 125, 90, 105, 90, 75, 175, 165, 140, 160, 180, 215, 255, 230, 175, 160, 105, 60, 0]

我正在尝试将其解析为一个名为Player以填充其所有属性(例如名称等)的对象。

这是我的方法,这是一种可怕的方法!

var player = new Player {
    Client = state.workSocket,
    UUID = state.player.UUID,
    PlayerID = data[3],
    SkinVarient = data[4],
    Hair = data[5],
    Name = Encoding.UTF8.GetString(data, 7, data[6]),
    HairDye = data[7 + data[6] + 1],
    HideVisuals = data[7 + data[6] + 2],
    HideVisuals2 = data[7 + data[6] + 3],
    HideMisc = data[7 + data[6] + 4],
    HairColor = data.Skip(data[7 + data[6] + 4]).Take(3).ToArray(),
    SkinColor = data.Skip(data[7 + data[6] + 4] + 3).Take(3).ToArray(),
    EyeColor = data.Skip(data[7 + data[6] + 4] + 3 + 3).Take(3).ToArray(),
    ShirtColor = data.Skip(data[7 + data[6] + 4] + 3 + 3 + 3).Take(3).ToArray(),
    UnderShirtColor = data.Skip(data[7 + data[6] + 4] + 3 + 3 + 3 + 3).Take(3).ToArray(),
    PantsColor = data.Skip(data[7 + data[6] + 4] + 3 + 3 + 3 + 3 + 3).Take(3).ToArray(),
    ShoeColor = data.Skip(data[7 + data[6] + 4] + 3 + 3 + 3 + 3 + 3 + 3).Take(3).ToArray(),
    Difficulty = data.Last()
};

这感觉不是一种非常健壮和好的映射方式,有没有合适的方法来做这件事?

标签: c#.net.net-core

解决方案


推荐阅读