我想現在整數轉換爲一個字符串,我有一個問題。基地轉換問題
我已經完成了大部分編寫和編寫的代碼,但是在攜帶到下一個地方時它有一個小缺陷。這很難描述,所以我給你舉個例子。用基座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