private static void ReadValue(ref CsfValue csfValue, BinaryReader binary) { var valueLength = binary.ReadInt32(); var value = Encoding.Unicode.GetString(Decoding(binary.ReadBytes(valueLength << 1), valueLength << 1)); csfValue.Value = value; }
public static CsfValue Serialize(BinaryReader binaryReader) { var result = new CsfValue(); var flag = binaryReader.ReadInt32(); // 判断是否包含额外内容 switch (flag) { case STR_RAW: ReadValue(ref result, binaryReader); break; case WSTR_RAW: ReadValue(ref result, binaryReader); result.Extra = Encoding.ASCII.GetString(binaryReader.ReadBytes(binaryReader.ReadInt32())); break; default: throw new FormatException(); } return(result); }