首页 > 解决方案 > C# 是否有办法将具有 int 字段(字节、ushort、ulong 等)的对象编写为字节数组?

问题描述

我正在尝试将仅具有 int 字段(ushort、ulong、uint、int 等)的对象转换为一个字节数组,其中包含每个 int 作为一个字节,按照它在对象中出现的顺序。例如,如果我有一个形式的对象

obj = {subobj: {uint firstProp: 500, ushort secondProp: 12}, byte lastProp: 5}

然后我希望字节数组是

{0, 0, 1, 244, 0, 12, 5}

我尝试通过使用序列化(如本答案中所述)来创建这个字节数组,但我注意到每个字节之前和之后都有一堆东西。基于这个网站,我相信这代表了我不想要的数据库和文件。我知道在 C++ 中我可以使用它reinterpret_cast<uint8_t*>(obj)来获得所需的结果。在 C# 中是否有等效的方法来执行此操作?

标签: c#arrayscastingbinaryinteger

解决方案


你可以尝试做这样的事情:

foreach(int value in obj)
{
    byte lsbOfLsb = (byte)value;
    byte msbOfLsb = (byte)(value >> 8);
    byte lsbOfMsb = (byte)(value >> 16);
    byte msbOfMsb = (byte)(value >> 24);
}

显然这只是想法。您应该使用 for 循环而不是 foreach 并将所有元素解析为 int eg。另一种方法是检查数据类型

typeof(value) //op 1
// OR
if(value is int) //e.g. 

然后根据需要转换为字节。


推荐阅读