#include #include int main() { char buf[256]; long la, lb; wchar_t a, b; int i = 0; while(fgets(buf, sizeof(buf), stdin)) { if(scanf("%04X %04X", &la, &lb) != 2) continue; a = la; b = lb; // now a is PUA, b is real ucs i = WideCharToMultiByte(950, 0, &a, 1, buf, sizeof(buf), 0, 0); if(i < 1) { fprintf(stderr, "conversion error: %04X!\n", a); } printf("%02X%02X %04X\n", (int)((unsigned char)buf[0]), (int)((unsigned char)buf[1]), b); } }