国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 字符串按 ASCII碼 排序的方法

2019-10-29 21:11:29
字體:
供稿:網(wǎng)友

在和銀行做數(shù)據(jù)對(duì)接時(shí),涉及到數(shù)據(jù)傳輸時(shí)的驗(yàn)簽及加密。其中數(shù)據(jù)簽名方案中就要求數(shù)據(jù)項(xiàng)根據(jù)屬性名按 ASCII碼 進(jìn)行升序排序。C#中的ASCII碼排序并不是表面上那么簡(jiǎn)單,一不小心就入坑了。因?yàn)镃#的排序默認(rèn)并不是按照ASCII碼進(jìn)行排序的。舉個(gè)例子, 我有這樣一個(gè)字符串?dāng)?shù)組,然后對(duì)其排序。

string[] vv = { "1", "2", "A", "a", "B", "b" };Array.Sort(vv); //結(jié)果 1 2 a A b B

如果是按照ASCII碼進(jìn)行排序的話,順序應(yīng)該是: 1, 2, A, B, a, b  而實(shí)際排序后的結(jié)果則是:1, 2, a, A, b, B . 這也就是說Sort()方法默認(rèn)情況下并不是按ASCII碼進(jìn)行排序的。之后我也同樣測(cè)試了C#中的OrderBy()的排序,發(fā)現(xiàn)它默認(rèn)情況下也并不是按照ASCII碼進(jìn)行的排序。

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

那么既然默認(rèn)排序不是按ASCII碼進(jìn)行的排序,我們要怎么做呢? 看下面代碼,只需要在原來排序方法上再加個(gè)參數(shù): string.CompareOrdinal。string.CompareOrdinal會(huì)把每個(gè)字符先轉(zhuǎn)成相應(yīng)的數(shù)值(如 a 轉(zhuǎn)為數(shù)值 97),然后再對(duì)數(shù)值進(jìn)行比較。

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

注:掉入這個(gè)坑是因?yàn)槠鸪醪恢廊绾螌?duì)字符做ASCII碼排序,于是百度了一把。得到的結(jié)果就是這個(gè)C# 參數(shù)按照ASCII碼從小到大排序(字典序)  而當(dāng)我采用這種方式時(shí),銀行驗(yàn)簽?zāi)遣绞冀K通不過,調(diào)試發(fā)現(xiàn)我排序后的結(jié)果和銀行那邊的不同。

以上所述是小編給大家介紹的C# 字符串按 ASCII碼 排序的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到c#教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 栖霞市| 三门峡市| 高尔夫| 东莞市| 五原县| 陇南市| 新建县| 平凉市| 赣榆县| 米脂县| 黎川县| 柯坪县| 绥江县| 定边县| 长汀县| 鄂托克旗| 房产| 榆林市| 兴城市| 井陉县| 同心县| 克什克腾旗| 双城市| 灵川县| 三原县| 东辽县| 锡林浩特市| 那坡县| 清远市| 威海市| 赤壁市| 兴隆县| 迁安市| 荔浦县| 长海县| 炉霍县| 健康| 丽水市| 乐都县| 嘉义县| 称多县|