繁体   English   中英

C# 是否有办法将具有 int 字段(byte、ushort、ulong 等)的对象作为字节数组编写?

[英]Does C# have a way to write an object with int fields (byte, ushort, ulong, etc.) as a byte array?

我试图将一个只有 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# 中是否有等效的方法来执行此操作?

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

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. 

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

暂无
暂无

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

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