c++ - 动态计算 unicode 字符
问题描述
对于游戏,我需要处理扑克牌。我想利用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);
}
解决方案
如果这是一个孤立的地方,您打算使用计算的 unicode 字符,您可以基于以下内容。
1F0XY
UTF-8 中的按位编码为:
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);
推荐阅读
- python - 我想在 tkinter 中调用另一个类。我有 2 个类,我不能在我的窗口类下面调用数据库类
- python - 打印 void 函数执行函数
- javascript - 如何在谷歌脚本的电报机器人中键入多列消息
- oracle - 如何在 PL/SQL 中制作一个好的程序?
- javascript - 如何将每个项目放入p标签+最后清除innerHTML
- python - 错误“charmap”编解码器无法解码位置 38619 中的字节 0x9d:字符映射到
- excel-formula - 根据多个工作表中单元格的值累积总和
- java - 递增二维数组中的对象
- java - Akka 2.6 非 Actor 类中的 Actor 发现(在 ActorSystem 之外获取 ActorRef)
- xamarin.mac - 如何在 Xamarin.Mac 中调试 PerformSelector