Beispiel #1
0
        public static int FromBytes <T>(this ArraySegment <byte> src, T[] dst) where T : struct
        {
            var dstSize = dst.Length * Marshal.SizeOf(typeof(T));

            if (src.Count > dstSize)
            {
                throw new ArgumentOutOfRangeException();
            }
            using (var pin = ArrayPin.Create(dst))
            {
                Marshal.Copy(src.Array, src.Offset, pin.Ptr, src.Count);
            }
            return(src.Count);
        }
Beispiel #2
0
        public static int ToBytes <T>(this T[] src, ArraySegment <byte> dst) where T : struct
        {
            var srcSize = src.Length * Marshal.SizeOf(typeof(T));

            if (srcSize > dst.Count)
            {
                throw new ArgumentOutOfRangeException();
            }
            using (var pin = ArrayPin.Create(src))
            {
                Marshal.Copy(pin.Ptr, dst.Array, dst.Offset, srcSize);
            }
            return(srcSize);
        }