public static String ReadString(FileReader reader) { Assert.IsNotNull(reader, nameof(reader)); var output = ""; var bytelist = new List <Byte>(); while (true) { var b = reader.ReadByte(); if (b == 0) { break; } else if (b < 0x20) { output += reader.Encoding.GetString(bytelist.ToArray()); bytelist.Clear(); if (b == (Byte)StringCode.COLOR) { var value = reader.ReadByte(); output += (Char)b; output += (Char)value; } else if (b == (Byte)StringCode.ITEM) { var value = reader.ReadUInt16(); output += (Char)b; output += (Char)value; } else { output += (Char)b; } } else { bytelist.Add(b); } } output += reader.Encoding.GetString(bytelist.ToArray()); bytelist.Clear(); return(output); }