C#中如何将值类型转换为byte?我想做类似的事情:byte[]byteArray;枚举命令:字节{一,二};命令内容=一个;byteArray=(byte*)&content;是的,它现在是一个字节,但考虑到我要改变它?如何使byteArray包含内容?(我不在乎复制它)。BitConverter类可能正是您正在寻找的。示例:int输入=123;byte[]output=BitConverter.GetBytes(输入);如果你的枚举被称为Int32派生类型,你可以简单地先转换它的值:BitConverter.GetBytes((int)commands.one);将任何值类型(不仅仅是基本类型)转换为字节数组,反之亦然:publicTFromByteArray(byte[]rawValue){GCHandlehandle=GCHandle.Alloc(rawValue,GCHandleType.Pinned);T结构=(T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(),typeof(T));handle.Free();返回结构;}publicbyte[]ToByteArray(objectvalue,intmaxLength){intrawsize=Marshal.SizeOf(value);byte[]rawdata=newbyte[rawsize];GCHandlehandle=GCHandle.Alloc(rawdata,GCHandleType.Pinned);Marshal.StructureToPtr(值,handle.AddrOfPinnedObject(),false);handle.Free();if(maxLength您可以使用BitConverter.GetBytes方法来执行此操作。对于那些不使用BitConverter但对其工作原理感兴趣的人,您可以这样做://Convertdoubletobyte[]publicunsafebyte[]pack(doubled){byte[]packed=newbyte[8];//double中有8个字节void*ptr=&d;//获取对包含双精度数的内存的引用for(inti=0;i>(8*i));//移位,以便将每个8位(1字节)的块转换为一个字节并添加到数组中}returnpacked;}//将byte[]转换为doublepublicunsafedoubleunpackDouble(byte[]data){doubleunpacked=0.0;//为doublevoid*ptr=&unpacked;准备一块内存//Referencethedoublememoryfor(inti=0;i实际上,使用BitConverter更容易和更安全,但是知道它很有趣!您也可以只做一个简单的转换并将其传递给数组构造函数。它的长度是也类似于BitConverter的方法,以上是C#学习教程:C#中如何将值类型转换为byte?所有内容分享,如果对大家有用,还需要进一步学习C#学习教程,希望大家会多多关注---new[]{(byte)mode}本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如有转载请注明出处:
