string GetCharText() { int ch = GetChar(); if (ch > char.MaxValue) { SurrogateChar surrogate = new SurrogateChar(ch); char[] chars = new char[2]; chars[0] = surrogate.HighChar; chars[1] = surrogate.LowChar; return(new string(chars, 0, 2)); } else { return(((char)ch).ToString()); } }
unsafe protected void WriteUTF8Char(int ch) { if (ch < 0x80) { WriteByte((byte)ch); } else if (ch <= char.MaxValue) { char *chars = stackalloc char[1]; chars[0] = (char)ch; UnsafeWriteUTF8Chars(chars, 1); } else { SurrogateChar surrogateChar = new SurrogateChar(ch); char * chars = stackalloc char[2]; chars[0] = surrogateChar.HighChar; chars[1] = surrogateChar.LowChar; UnsafeWriteUTF8Chars(chars, 2); } }
protected unsafe void WriteUTF8Char(int ch) { if (ch < 0x80) { this.WriteByte((byte)ch); } else if (ch <= 0xffff) { char *chars = (char *)stackalloc byte[(((IntPtr)1) * 2)]; chars[0] = (char)ch; this.UnsafeWriteUTF8Chars(chars, 1); } else { SurrogateChar ch2 = new SurrogateChar(ch); char * chPtr2 = (char *)stackalloc byte[(((IntPtr)2) * 2)]; chPtr2[0] = ch2.HighChar; chPtr2[1] = ch2.LowChar; this.UnsafeWriteUTF8Chars(chPtr2, 2); } }