我想现在整数转换为一个字符串,我有一个问题。基地转换问题
我已经完成了大部分编写和编写的代码,但是在携带到下一个地方时它有一个小缺陷。这很难描述,所以我给你举个例子。用基座26用由小写字母组成的字符集:
0 = “一”
1 = “B”
2 = “c” 的
...
25 =“ z“
26 =”ba“(这应该等于”aa“)
在某些情况下,它似乎在字符集的零位跳过字符。
令我困惑的是我看到我的代码没有错。我一直在研究这个问题已经很久了,我仍然无法弄清楚。
char* charset = (char*)"abcdefghijklmnopqrstuvwxyz";
int charsetLength = strlen(charset);
unsigned long long num = 5678; // Some random number, it doesn't matter
std::string key
do
{
unsigned int remainder = (num % charsetLength);
num /= charsetLength;
key.insert(key.begin(), charset[remainder]);
} while(num);
我有一种感觉,功能上模返回一个零绊倒了,但我一直在这这么久了,我无法弄清楚它是如何发生的。欢迎任何建议。
编辑:事实上,生成的字符串是小endian是无关我的应用程序。
旁注:您所选择的数据类型为什么不是'charset'是一个const char *'?(这将消除C风格的演员阵容。)为什么不是'charsetlength'是一个'std :: size_t' - 这是类型通过返回'的std :: strlen的()'。如果'num'是一个'无符号长long',怎么会(在通用平台)除以26安装到了'无符号int'的结果呢? – sbi 2010-02-19 06:47:53
我或多或少地写了这段代码作为例子,虽然你的观点是有效的和赞赏。 – jakogut 2010-02-19 06:51:15