コード例 #1
0
        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);
        }
コード例 #2
0
 public int GetByteCount(ReadOnlySpan <char> str)
 {
     try
     {
         return(_primaryEncoding.GetByteCount(str));
     }
     catch (Exception)
     {
         return(_secondaryEncoding.GetByteCount(str));
     }
 }