コード例 #1
0
        public static object GetPrimitiveValue(PrimitiveType basicType, byte[] data, ref int startIndex)
        {
            var    length = PrimitiveTypeHelper.GetLength(basicType);
            object value  = null;

            switch (length)
            {
            case 1:
                value = data[startIndex];
                break;

            case 2:
                value = BitConverter.ToInt16(data, startIndex).FromBigEndian();
                break;

            case 4:
                value = BitConverter.ToInt32(data, startIndex).FromBigEndian();
                break;

            case 8:
                value = BitConverter.ToInt64(data, startIndex).FromBigEndian();
                break;

            default:
                throw new Exception("StaticField类型错误");
            }
            startIndex += length;
            return(value);
        }
コード例 #2
0
        public static DumpPrimitiveArray Deserialize(this DumpPrimitiveArray input, byte[] data, ref int startIndex)
        {
            input.PrimitiveArrayID       = (int)BitConverter.ToInt32(data, startIndex).FromBigEndian();
            startIndex                  += 4;
            input.StackTraceSerialNumber = (int)BitConverter.ToInt32(data, startIndex).FromBigEndian();
            startIndex                  += 4;
            input.Length                 = BitConverter.ToInt32(data, startIndex).FromBigEndian();
            startIndex                  += 4;
            input.Type                   = (PrimitiveType)data[startIndex];
            startIndex                  += 1;

            var size = PrimitiveTypeHelper.GetLength(input.Type) * input.Length;

            input.ElementDatas = data.Skip(startIndex).Take(size).ToArray();
            startIndex        += size;

            return(input);
        }