using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
class Program {
static string Hex<T>(T b) {
return string.Format("{0:X}", b);
}
static void Main() {
string s = "𪚲";
Console.WriteLine(s);
Console.WriteLine(s.Length);
Console.WriteLine("\U0002A6B2");
Console.WriteLine("\uD869\uDEB2");
byte[] b1 = BitConverter.GetBytes(s[0]);
byte[] b2 = BitConverter.GetBytes(s[1]);
Console.WriteLine(string.Join(" ", b1.Select(Hex)));
Console.WriteLine(string.Join(" ", b2.Select(Hex)));
int hi = (b1[1] << 8) | b1[0];
int lo = (b2[1] << 8) | b2[0];
int uni = 0x10000 + (hi - 0xD800) * 0x400 + (lo - 0xDC00);
Console.WriteLine(Hex(uni));
Console.WriteLine(Hex(char.ConvertToUtf32(s, 0)));
Console.WriteLine(char.ConvertFromUtf32(uni));
var enc = new UTF8Encoding();
byte[] bytes = enc.GetBytes(s);
Console.WriteLine(string.Join(" ", bytes.Select(Hex)));
Console.WriteLine(enc.GetString(bytes));
}
}
リンク