C#字符串按ASCII码排序的⽅法
在和银⾏做数据对接时,涉及到数据传输时的验签及加密。其中数据签名⽅案中就要求数据项根据属性名按 ASCII码进⾏升序排序。C#中的ASCII码排序并不是表⾯上那么简单,⼀不⼩⼼就⼊坑了。因为C#的排序默认并不是按照ASCII码进⾏排序的。举个例⼦,我有这样⼀个字符串数组,然后对其排序。
string[] vv = { "1", "2", "A", "a", "B", "b" };
Array.Sort(vv); //结果 1 2 a A b B
如果是按照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); //结果 1 2 a A b B
签名字符串是什么那么既然默认排序不是按ASCII码进⾏的排序,我们要怎么做呢?看下⾯代码,只需要在原来排序⽅法上再加个参数: string.CompareOrdinal。string.CompareOrdinal会把每个字符先转成相应的数值(如 a 转为数值 97),然后再对数值进⾏⽐较。
Array.Sort(vv, string.CompareOrdinal); //ASCII排序
注:掉⼊这个坑是因为起初不知道如何对字符做ASCII码排序,于是百度了⼀把。得到的结果就是这个⽽当我采⽤这种⽅式时,银⾏验签那步始终通不过,调试发现我排序后的结果和银⾏那边的不同。
以上所述是⼩编给⼤家介绍的C# 字符串按 ASCII码排序的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论