gpt4 book ai didi

character-encoding - 如何将 8 位字节转换为 6 位字符?

转载 作者:行者123 更新时间:2023-12-01 16:19:34 26 4
gpt4 key购买 nike

我有一个特定要求,即将字节流转换为每个字符 6 位的字符编码。

Here's an example:

Input: 0x50 0x11 0xa0

Character Table:

010100 T
000001 A
000110 F
100000 SPACE


Output: "TAF "

Logically I can understand how this works:

Taking 0x50 0x11 0xa0 and showing as binary:

01010000 00010001 10100000

Which is "TAF ".

以编程方式执行此操作的最佳方法是什么(伪代码或 C++)。谢谢!

最佳答案

好吧,每 3 个字节,您最终会得到四个字符。因此,一方面,您需要弄清楚如果输入不是三个字节的倍数该怎么办。 (它是否有某种填充,例如 base64?)

然后我可能会依次获取每 3 个字节。在 C# 中,这与 C 的伪代码足够接近:)

for (int i = 0; i < array.Length; i += 3)
{
// Top 6 bits of byte i
int value1 = array[i] >> 2;
// Bottom 2 bits of byte i, top 4 bits of byte i+1
int value2 = ((array[i] & 0x3) << 4) | (array[i + 1] >> 4);
// Bottom 4 bits of byte i+1, top 2 bits of byte i+2
int value3 = ((array[i + 1] & 0xf) << 2) | (array[i + 2] >> 6);
// Bottom 6 bits of byte i+2
int value4 = array[i + 2] & 0x3f;

// Now use value1...value4, e.g. putting them into a char array.
// You'll need to decode from the 6-bit number (0-63) to the character.
}

关于character-encoding - 如何将 8 位字节转换为 6 位字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com