第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C# 比較兩個(gè)包含小寫文本的 byte[] 數(shù)組

C# 比較兩個(gè)包含小寫文本的 byte[] 數(shù)組

C#
拉丁的傳說 2022-06-12 10:54:02
當(dāng)比較來自兩個(gè)單獨(dú)的 byte[] 源(數(shù)組/指針)的單個(gè)字節(jié)值時(shí),如何執(zhí)行 case INSENSITIVE 比較?我有一個(gè)非常大的字節(jié)數(shù)組,其中包含我通過指針訪問的字符串的“干草堆”,并且我將其與“針”模式進(jìn)行比較,但目前它僅在存在精確區(qū)分大小寫的匹配時(shí)才返回。是否可以創(chuàng)建一個(gè)包含從上到下的值的查找字典并在比較循環(huán)中使用它,還是有更快的方法?(性能方面)編輯1:字符串是 UTF8 編碼的。期望的行為是:在比較 a,a 時(shí)返回 true;一個(gè),一個(gè);或a,A。但由于 UTF8 中的 'A' 的值為 65,而 'a' 的值為 97,我無法進(jìn)行不區(qū)分大小寫的比較。
查看完整描述

2 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

小寫和大寫 ACSII 和 UTF8 代碼的字節(jié)表示具有 32(或 hex20)的偏移量,因此您可以實(shí)現(xiàn)x == byte[x] || x == byte[x+32]與 x=uppercase char 值的比較。


編輯:


假設(shè)您真的只需要處理小寫和大寫英文字母,您可以使用按位運(yùn)算來加快速度,因?yàn)槟梢砸淮翁幚?8 個(gè)字節(jié)/字符,因?yàn)樗鼈儍H在第 3 個(gè)最重要的位上有所不同:


'b' & 0b_1101_1111 == 'B' & 0b_1101_1111


所以你可以處理 8 字節(jié)塊中的字節(jié)數(shù)組:


void Main()

{

    byte[] a = "ASDADAGF".Select(x => (byte)(x) ).ToArray();

    byte[] b = "asdAdAGF".Select(x => (byte)(x) ).ToArray();

    bitCompared(a,b).Dump();

}


static bool bitCompared( byte[] b1, byte[]b2)

{

    UInt64 a = BitConverter.ToUInt64(b1, 0); //loop over the index

    UInt64 b = BitConverter.ToUInt64(b2, 0);

    UInt64 mask =0b_1101_1111_1101_1111_1101_1111_1101_1111_1101_1111_1101_1111_1101_1111_1101_1111;

    return (a &= mask) == (b &= mask);

}

afaik 還有更多使用 SIMD 和其他低級(jí)“黑客”進(jìn)行優(yōu)化的方法.....


查看完整回答
反對(duì) 回復(fù) 2022-06-12
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

將byte數(shù)組轉(zhuǎn)換為 astring然后進(jìn)行不區(qū)分大小寫的比較。就像是:


bool caseInsensitiveByteArrayComparison(byte[] a, byte[] b) {

    string aString = System.Text.Encoding.UTF8.GetString(a);

    string bString = System.Text.Encoding.UTF8.GetString(b);

    return string.Equals(aString, bString, StringComparison.CurrentCultureIgnoreCase);

}


查看完整回答
反對(duì) 回復(fù) 2022-06-12
  • 2 回答
  • 0 關(guān)注
  • 211 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)