/// <summary> /// Copy the given src char (UCS2) array pointer to the destination UTF-8 byte array, converting /// to UTF-8 along the way. /// </summary> /// <param name="dest"></param> /// <param name="destLength"></param> /// <param name="destUTF8MaxLengthInBytes"></param> /// <param name="src"></param> /// <param name="srcLength"></param> /// <returns></returns> public static CopyError Copy(byte *dest, out int destLength, int destUTF8MaxLengthInBytes, char *src, int srcLength) { var error = Unicode.Utf16ToUtf8(src, srcLength, dest, out destLength, destUTF8MaxLengthInBytes); if (error == ConversionError.None) { return(CopyError.None); } return(CopyError.Truncation); }
/// <summary> /// /// </summary> /// <param name="dest"></param> /// <param name="destLength"></param> /// <param name="destUTF8MaxLengthInBytes"></param> /// <param name="src"></param> /// <param name="srcLength"></param> /// <returns></returns> public static CopyError Append(byte *dest, ref ushort destLength, ushort destUTF8MaxLengthInBytes, char *src, int srcLength) { var error = Unicode.Utf16ToUtf8(src, srcLength, dest + destLength, out var temp, destUTF8MaxLengthInBytes - destLength); destLength += (ushort)temp; if (error == ConversionError.None) { return(CopyError.None); } return(CopyError.Truncation); }