我想打印所有可能的UTF-8值。类似的东西:
uint32_t max = 0xFFFFFFFF;
for (uint32_t i = 0; i <= max; i++)
{
std::cout << std::hex << i << std::endl;
}
但是我打印了很多不可能的案例。还有更好的主意吗?
答案 0 :(得分:1)
我不知道你为什么要这样做,但是你走了:
int i = 0;
for(; i < 0x80; ++i) // 0xxxxxxx
printf("%.2x\n", i);
for(; i < 0x800; ++i) // 110xxxxx 10xxxxxx
printf("%.2x %.2x\n", 0xc0 | (i >> 6), 0x80 | (i & 0x3f));
for(; i < 0x10000; ++i) // 1110xxxx 10xxxxxx 10xxxxxx
if(i < 0xd800 || i >= 0xe000) // skip surrogates
printf("%.2x %.2x %.2x\n", 0xe0 | (i >> 12), 0x80 | ((i >> 6) & 0x3f), 0x80 | (i & 0x3f));
for(; i < 0x110000; ++i) // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
printf("%.2x %.2x %.2x %.2x\n", 0xf0 | (i >> 18), 0x80 | ((i >> 12) & 0x3f), 0x80 | ((i >> 6) & 0x3f), 0x80 | (i & 0x3f));