public void ParseStringTable(ref SpanReader sr) { uint entryCount = (uint)sr.DecodeBitsAndAdvance(); StringTable = new string[entryCount]; for (var i = 0; i < entryCount; i++) { int strLen = (int)sr.DecodeBitsAndAdvance(); // Bugged, doesnt actually read the string length //StringTable[i] = sr.ReadStringRaw(strLen); StringTable[i] = sr.Encoding.GetString(sr.ReadBytes(strLen)); } }
public static string ReadADCString(AdhocFile parent, ref SpanReader sr) { if (parent.Version <= 8) { return(sr.ReadString2()); } else { uint strTableIndex = (uint)sr.DecodeBitsAndAdvance(); return(parent.StringTable[strTableIndex]); } }
public void PrintStringTable(string outPath) { var sr = new SpanReader(_buffer); sr.Position = 8; using var sw = new StreamWriter(outPath); uint entryCount = (uint)sr.DecodeBitsAndAdvance(); var results = new string[entryCount]; for (var i = 0; i < entryCount; i++) { sw.WriteLine($"0x{sr.Position:X2} | {sr.ReadString1()}"); } sw.Flush(); }