现在我正在开发一个需要一个整数转换为一个基数62字符串多次的项目.转换速度越快,越好.
问题是我很难得到我自己的基本转换方法来快速可靠.如果我使用字符串,它通常是可靠的,运行良好,但是速度很慢.如果我使用char数组,它通常要快得多,但它也是非常混乱,不可靠的. (它产生堆损坏,应该匹配的字符串的比较返回一个负数等)
那么什么是从一个非常大的整数转换到一个基本的62键最快最可靠的方法?在未来,我计划在我的应用程序中使用SIMD模型代码,这个操作是否可以并行化?
编辑:此操作每秒执行几百万次;一旦操作完成,它将再次作为循环的一部分开始,因此运行速度越快越好.被转换的整数是任意大小的,可以很容易地与128位整数(或更大)一样大.
编辑:这是我目前使用的功能.
char* charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; int charsetLength = (int)(strlen(charset)); //maxChars is an integer specifying the maximum length of the key char* currentKey = new char[maxChars]; void integerToKey(unsigned long long location) { unsigned long long num = location; int i = 0; for(; num > 0; i++) { currentKey[i] = charset[num % (charsetLength)]; num /= charsetLength + 1; } currentKey[i + 1] = '\0'; }