Csharp/C#教程:C# 字符串按 ASCII码 排序的方法分享

在和银行做数据对接时,涉及到数据传输时的验签及加密。其中数据签名方案中就要求数据项根据属性名按ASCII码进行升序排序。C#中的ASCII码排序并不是表面上那么简单,一不小心就入坑了。因为C#的排序默认并不是按照ASCII码进行排序的。举个例子,我有这样一个字符串数组,然后对其排序。

string[]vv={"1","2","A","a","B","b"}; Array.Sort(vv);//结果12aAbB

如果是按照ASCII码进行排序的话,顺序应该是:1,2,A,B,a,b 而实际排序后的结果则是:1,2,a,A,b,B.这也就是说Sort()方法默认情况下并不是按ASCII码进行排序的。之后我也同样测试了C#中的OrderBy()的排序,发现它默认情况下也并不是按照ASCII码进行的排序。

string[]vv={"1","2","A","a","B","b"}; vv.OrderBy(x=>x);//结果12aAbB

那么既然默认排序不是按ASCII码进行的排序,我们要怎么做呢?看下面代码,只需要在原来排序方法上再加个参数:string.CompareOrdinal。string.CompareOrdinal会把每个字符先转成相应的数值(如a转为数值97),然后再对数值进行比较。

Array.Sort(vv,string.CompareOrdinal);//ASCII排序

注:掉入这个坑是因为起初不知道如何对字符做ASCII码排序,于是百度了一把。得到的结果就是这个C#参数按照ASCII码从小到大排序(字典序) 而当我采用这种方式时,银行验签那步始终通不过,调试发现我排序后的结果和银行那边的不同。

上述就是C#学习教程:C# 字符串按 ASCII码 排序的方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

www.ctvol.com true Article Csharp/C#教程:C# 字符串按 ASCII码 排序的方法分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907800.html

(0)
上一篇 2021年10月25日 上午3:05
下一篇 2021年10月25日 上午3:06

精彩推荐