[英]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.