有没有办法将字符串值(任何内容)转换为数字,以便它们以相同的方式排序?我不需要能够将数字转换回字符串。事实上,如果无法将其转换回来,那将是一个优势。
我不需要能够对任何长度的字符串进行排序。如果使用64位长整数作为排序值,那么我可以将文本修剪为适合此数字范围的值。
答案 0 :(得分:2)
我不认为可以100%正确的方式,因为排序字符串取决于文化。对于前
int c1 = String.Compare("AA", "BB", false, CultureInfo.GetCultureInfo("en-US")); //return -1
int c2 = String.Compare("AA", "BB", false, CultureInfo.GetCultureInfo("da-DK")); //return 1
我能想到的最接近的是:
ulong l = BitConverter.ToUInt64(Encoding.UTF8.GetBytes(str), 0);
PS:pad str 如果它的len小于8
答案 1 :(得分:0)
你可以从字符串中取出前8个字节,8个字节组成一个ulong。它只是带有unicode的字符串的4个字符,或者如果将字符串限制为ASCII则为8个字符。