現在、整数を文字列に変換しようとしていますが、問題が発生しています。
私はコードを書き、ほとんどの部分で動作するようになりましたが、次の場所に運ぶときに小さな欠陥があります。説明するのが難しいので、例を挙げます。小文字のアルファベットで構成される文字セットで base 26 を使用する:
0 = "a"
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);
関数がゼロを返すモジュロでつまずいているような気がしますが、これに長い間取り組んできたので、それがどのように起こっているのかわかりません。どんな提案でも大歓迎です。
編集:生成された文字列がリトルエンディアンであるという事実は、私のアプリケーションには関係ありません。