private static byte[] CreateNormalStrings(IReadOnlyList <string> strs, IMutagenEncoding encoding) { var ret = new byte[100]; var writer = new MutagenWriter( new BinaryWriter(new MemoryStream(ret)), GameConstants.SkyrimSE); writer.Write((uint)strs.Count); writer.Write((uint)strs.Sum(s => encoding.GetByteCount(s) + 1)); int sum = 0; // Write index for (int i = 0; i < strs.Count; i++) { writer.Write(i + 1); writer.Write(sum); sum += encoding.GetByteCount(strs[i]) + 1; } // Write strings for (int i = 0; i < strs.Count; i++) { writer.Write(strs[i], StringBinaryType.NullTerminate, encoding); } return(ret); }
public int GetByteCount(ReadOnlySpan <char> str) { try { return(_primaryEncoding.GetByteCount(str)); } catch (Exception) { return(_secondaryEncoding.GetByteCount(str)); } }