C#byte[]structintptr等的相互转换
Posted 【君莫笑】
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#byte[]structintptr等的相互转换相关的知识,希望对你有一定的参考价值。
一、struct byte[]互相转换
//struct转换为byte[] public static byte[] StructToBytes(object structObj) int size = Marshal.SizeOf(structObj); IntPtr buffer = Marshal.AllocHGlobal(size); try Marshal.StructureToPtr(structObj, buffer, false); byte[] bytes = new byte[size]; Marshal.Copy(buffer, bytes, 0, size); return bytes; finally Marshal.FreeHGlobal(buffer); //byte[]转换为struct public static object BytesToStruct(byte[] bytes, Type type) int size = Marshal.SizeOf(type); IntPtr buffer = Marshal.AllocHGlobal(size); try Marshal.Copy(bytes, 0, buffer, size); return Marshal.PtrToStructure(buffer, type); finally Marshal.FreeHGlobal(buffer);
二、Intptr、byte[]互相转换
//IntPtr转byte[]
IntPtr y=new IntPtr(); byte[] ys = new byte[yLength]; Marshal.Copy(y, ys, 0, yLength);
//byte[]转换为Intptr public static Intptr BytesToIntptr(byte[] bytes) int size = bytes.Length; IntPtr buffer = Marshal.AllocHGlobal(size); try Marshal.Copy(bytes, 0, buffer, size); return buffer; finally Marshal.FreeHGlobal(buffer);
来源:https://www.cnblogs.com/jhlong/p/5715015.html
以上是关于C#byte[]structintptr等的相互转换的主要内容,如果未能解决你的问题,请参考以下文章
C语言 unsigned short 如何相互转 signed char