C# 字符串按 ASCII碼 排序的方法
在和銀行做數(shù)據(jù)對接時,涉及到數(shù)據(jù)傳輸時的驗(yàn)簽及加密。其中數(shù)據(jù)簽名方案中就要求數(shù)據(jù)項(xiàng)根據(jù)屬性名按 ASCII碼 進(jìn)行升序排序。C#中的ASCII碼排序并不是表面上那么簡單,一不小心就入坑了。因?yàn)镃#的排序默認(rèn)并不是按照ASCII碼進(jìn)行排序的。舉個例子, 我有這樣一個字符串?dāng)?shù)組,然后對其排序。
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#中的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)行的排序,我們要怎么做呢? 看下面代碼,只需要在原來排序方法上再加個參數(shù): string.CompareOrdinal。string.CompareOrdinal會把每個字符先轉(zhuǎn)成相應(yīng)的數(shù)值(如 a 轉(zhuǎn)為數(shù)值 97),然后再對數(shù)值進(jìn)行比較。
Array.Sort(vv, string.CompareOrdinal); //ASCII排序
注:掉入這個坑是因?yàn)槠鸪醪恢廊绾螌ψ址鯝SCII碼排序,于是百度了一把。得到的結(jié)果就是這個C# 參數(shù)按照ASCII碼從小到大排序(字典序) 而當(dāng)我采用這種方式時,銀行驗(yàn)簽?zāi)遣绞冀K通不過,調(diào)試發(fā)現(xiàn)我排序后的結(jié)果和銀行那邊的不同。
以上所述是小編給大家介紹的C# 字符串按 ASCII碼 排序的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對我們網(wǎng)站的支持!
欄 目:C#教程
下一篇:C# 創(chuàng)建、部署和調(diào)用WebService簡單示例
本文標(biāo)題:C# 字符串按 ASCII碼 排序的方法
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5761.html
您可能感興趣的文章
- 01-10C#實(shí)現(xiàn)實(shí)體類與字符串互相轉(zhuǎn)換的方法
- 01-10Winform消除button按下出現(xiàn)的虛線簡單實(shí)現(xiàn)方法
- 01-10C#利用反射技術(shù)實(shí)現(xiàn)去掉按鈕選中時的邊框效果
- 01-10WinForm判斷關(guān)閉事件來源于用戶點(diǎn)擊右上角“關(guān)閉”按鈕的方法
- 01-10winform實(shí)現(xiàn)關(guān)閉按鈕失效的兩種方法
- 01-10C#實(shí)現(xiàn)基于加減按鈕形式控制系統(tǒng)音量及靜音的方法
- 01-10C#中Json字符串的各種應(yīng)用類實(shí)例講解
- 01-10C# WinForm快捷鍵設(shè)置技巧
- 01-10VS中C#讀取app.config數(shù)據(jù)庫配置字符串的三種方法
- 01-10Unity3D獲取當(dāng)前鍵盤按鍵及Unity3D鼠標(biāo)、鍵盤的基本操作


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什