我正在尝试从 UTF-8 格式中提取字符值。假设我有两个字符,我从第一个字符中提取 5 位 => 10111,从另一个字符中提取 6 位 => 010000
所以
ch1 = 10111;
ch2 = 010000;
我如何将它们组合成 10111010000 并将其十六进制输出为 0x5d0?我需要转换还是有更简单的方法来执行此操作,因为检查文档 write
貌似可以顺序读取字符,有类似的功能吗?此外,由于 10111010000 的长度为 11 位,因此我似乎需要一个字符缓冲区。有谁知道该怎么做?
最佳答案
您需要使用移位,加上 |
或 |=
运算符。
unsigned int ch3 = (ch1 << 6) | ch2;
// ch3 = 0000010111010000
我在这里假设 unsigned int
是 16 位。您的里程可能会有所不同。
关于C++ 位操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544912/