将字符串转换为可排序的数字

本文关键字:排序 数字 字符串 转换 | 更新日期: 2023-09-27 18:10:40

是否有任何方法将字符串值(任何内容)转换为数字,使它们以相同的方式排序?我不需要能够将数字转换回字符串。事实上,如果它不可能转换回来,这将是一种优势。

我不需要对任何长度的字符串进行排序。如果使用64位长整数作为排序值,那么我可以将文本修剪为适合该数字范围的值。

将字符串转换为可排序的数字

我不认为有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

您可以从字符串中取出前8个字节,这8个字节将组成一个ullong。使用unicode的字符串只有4个字符,如果将字符串限制为ASCII,则只有8个字符。