gpt4 book ai didi

c++ - 前导 0 不可能进行基本编码?

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:36 28 4
gpt4 key购买 nike

我正在尝试将字符串编码为 base36。

static char *decode(unsigned long long value)
{
char base36[37] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buffer[14];
unsigned int offset = sizeof(buffer);

buffer[--offset] = '\0';
do {
buffer[--offset] = base36[value % 36];
} while (value /= 36);

return _strdup(&buffer[offset]);
}

int main()
{
char original[8] = "0XDX3A1";
unsigned long long encoded = _strtoui64(original, NULL, 36);
char *decoded = decode(encoded);

cout << "Original: " << original << " Decoded: " << decoded << endl;
return 0;
}

这里的问题是,虽然这些函数工作正常:如果我尝试编码的字符串有前导 0 解码后的字符串比原始字符串少一个(或更多)字符。。。 p>

如何处理?

最佳答案

如果将字符串 "01234" 解码为 base-16 字符串(例如),您将获得整数值 4660(0x1234) -- 完全通过将字符串 "1234""00001234" 解码为 base-16 字符串得到的相同整数值。通过将字符串转换为整数,您丢弃了有关前导零的所有信息。假设 Aa 表示相同的值,您还丢弃了关于大写字母与小写字母的任何信息。

将该整数值转换回字符串不会恢复前导 0,除非您明确添加它。如果您想要添加前导 0(或多个 0)当且仅当它们出现在原始字符串中时,您将不得不以某种方式存储该信息。

关于c++ - 前导 0 不可能进行基本编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22274719/

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