动态计算unicode字符

时间:2019-07-12 14:12:06

标签: c++ unicode

对于游戏,我需要处理纸牌。我想利用Playing cards in Unicode的优势,基本上可以归结为U+1F0XY,其中X设置颜色,Y设置卡片的正面。

我现在需要实现一个函数,该函数返回一个字符串,其中包含表示卡的单个Unicode字符。我需要使用哪种数据类型而不是占位符unicode_char_t来处理Unicode字符?

std::string cardToUnicodeChar(uint8_t face, uint8_t color)  {
  unicode_char_t unicodeCharacter = 0x1F000 + (color << 4) + face;
  return std::string(unicodeCharacter);
}

1 个答案:

答案 0 :(得分:2)

如果这是一个孤立的地方,您打算使用计算的unicode字符,则可以基于以下内容。

UTF-8中1F0XY的按位编码为:

11110000 10111111 100000XX 10XXYYYY

您可以按以下方式构造它:

uint8_t buf[5];
buf[0] = 0xf0;
buf[1] = 0x9f;
buf[2] = 0x80 | (color & 12) >> 2;
buf[3] = 0x80 | (color & 3) << 4 | face & 15;
buf[4] = 0;
return std::string(buf);