亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
什麼是位操作?
1。使用XOR轉(zhuǎn)換案例
2。使用和
3。刪除或設(shè)置字符串中的特定位
4。簡單字符串混淆的XOR
您什麼時候應(yīng)該使用位字符串操作?
最後筆記
首頁 後端開發(fā) php教程 揭開低級字符串修改的位於位置操作

揭開低級字符串修改的位於位置操作

Jul 26, 2025 am 09:49 AM
PHP Modify Strings

可以通過直接修改字符位,用於在ASCII中進行有效的字符串操作。 1。要切換情況,請使用32:'a' ^ 32 ='a'和'a' ^ 32 ='a'的XOR,從而無需分支即可快速轉(zhuǎn)換。 2。使用32檢查字符是小寫的,還是用?32進行標準化案例,並檢查字符是否在“ a” - “ z”範圍內(nèi)的字母內(nèi)。 3。使用掩碼刪除不需要的位,例如使用(C&0xE0)== 0過濾控製字符,或用(C&0x7F)強迫可打印的ASCII | 0x20。 4.將XOR與鍵一起使用,以進行輕巧的字符串混淆,在其中應(yīng)用相同的密鑰兩次恢復(fù)原始字符串,該字符串通常用於嵌入式系統(tǒng)或遊戲資產(chǎn)中,但不安全進行加密。這些技術(shù)在使用僅ASCII數(shù)據(jù),性能至關(guān)重要的情況下,或系統(tǒng)資源受到限制,但應(yīng)使用Unicode或UTF-8,在可維護的應(yīng)用程序代碼或交叉編碼可移植性方面避免,因為它們依賴於ASCII特定的低級位模式,因此應(yīng)避免使用系統(tǒng)資源。

揭開低級字符串修改的位於位置操作

鑽頭操作通常被視為黑魔法,尤其是應(yīng)用於字符串操縱時。但是在低級編程或關(guān)鍵性系統(tǒng)中,它們是有效角色處理的強大工具。雖然通常在高級別上處理字符串(例如replace()toUpperCase() ),但了解如何使用位操作會為您提供精細的控制和速度,尤其是在處理ASCII字符或編碼轉(zhuǎn)換時。

揭開低級字符串修改的位於位置操作

讓我們揭開在字符串修改的上下文以及何時以及為什麼使用它們的上下文中的位置操作。


什麼是位操作?

位操作操縱整數(shù)值的單個位。由於字符串中的字符(尤其是在ASCII中)被表示為整數(shù),因此我們可以使用這些操作直接修改它們。

揭開低級字符串修改的位於位置操作

常見的位運算符:

  • & (and) - 可用於掩蓋位
  • | (OR) - 用於設(shè)置位
  • ^ (xor) - 可用於切換位
  • ~ (不) - 倒置所有位
  • , <code>>> - 位移動(左/右)

每個ASCII字符都適合7或8位,因此這些操作是快速且可預(yù)測的。

揭開低級字符串修改的位於位置操作

1。使用XOR轉(zhuǎn)換案例

一個經(jīng)典的例子是在ASCII中的大寫和小寫字母之間轉(zhuǎn)換。

在ASCII:

  • 'A' = 65 = 0b01000001
  • 'a' = 97 = 0b01100001

注意區(qū)別嗎?只有第六位(與1相計數(shù))有所不同。那是:
97 - 65 = 32 ,而32為1 (或在十六進制中為<code>0x20 )。

因此,要切換情況:

 char c =&amp;#39;a&amp;#39;;
C ^= 32; //變成&amp;#39;a&amp;#39;
C ^= 32; //再次成為“ a”

這是因為Xor翻轉(zhuǎn)了位。將其應(yīng)用兩次,您會得到原件。

?實際用途:無分支的快速案例轉(zhuǎn)換:

 void tolower(char* str,int len){
    for(int i = 0; i &lt;len; i){
        if(((str [i]&gt; =&amp;#39;a&amp;#39;)&amp;&amp;(str [i] &lt;=&amp;#39;z&amp;#39;)){
            str [i] ^= 32;
        }
    }
}

??僅適用於ASCII字母。無法與UTF-8或重音字符一起使用。


2。使用和

您可以使用位並檢查性格特徵。

例如,檢查字符是否小寫:

  • 所有小寫字母均具有第六位。
  • 因此: c & 32如果是小寫的,則不為零。

但更巧妙地檢查角色是否完全是一封信:

  • 使用掩碼隔離相關(guān)位。

ascii&#39;a&#39;to&#39;z&#39;佔0x410x5A
您可以掩蓋更高的位並進行比較。

另外,使用位模式檢查char是否是字母表:

 //粗略檢查大寫(簡化)
if(((c&?32)&gt; =&amp;#39;a&amp;#39;&amp;&amp;(c&?32)&lt;=&amp;#39;z&amp;#39;){
    // c是&amp;#39;a&amp;#39; - &amp;#39;z&amp;#39;或&amp;#39;a&amp;#39; -  z&amp;#39;
}

在這裡, c & ~32清除了第六位,標準化情況。

?這避免了有條件的案例檢查,並讓您可以通過一個範圍處理兩個。


3。刪除或設(shè)置字符串中的特定位

假設(shè)您想通過剝離控製字符或強制可打印的ASCII來消毒字符串。

控製字符(例如\n , \t )在0-31(0x00–0x1f)範圍內(nèi),並且它們都清除了前三位。

過濾它們:

 if((c&0xe0)== 0){
    //可能是控制char(但要小心 - 空間為32)
}

或者,將角色迫使可打印範圍:

 C =(C&0x7f)| 0x20; //清除高位(如果擴展了ASCII),請確??臻g或更高

這在某些協(xié)議中用於“清潔”文本。


4。簡單字符串混淆的XOR

雖然不是加密,但XOR通常用於輕巧的字符串混淆。

示例:用密鑰XOR XOR:

 void Xorstring(char* str,int len,char鍵){
    for(int i = 0; i &lt;len; i){
        str [i] ^=鍵;
    }
}

用相同的鍵將其運行兩次,然後將原始字符串返回。

在:

  • 嵌入式系統(tǒng)
  • 遊戲資產(chǎn)
  • 惡意軟件(注意?。?/li>

?不安全 - 只是隱藏了隨意檢查的文字。


您什麼時候應(yīng)該使用位字符串操作?

?使用何時:

  • 使用僅ASCII數(shù)據(jù)
  • 性能至關(guān)重要(例如,解析器,嵌入式)
  • 您正在構(gòu)建低級工具(編譯器,網(wǎng)絡(luò)協(xié)議)
  • 內(nèi)存或CPU受到約束

避免何時:

  • 處理Unicode或UTF-8
  • 編寫可維護的應(yīng)用程序代碼
  • 跨編碼的可移植性很重要

最後筆記

當今大多數(shù)字符串任務(wù)並不是必需的,但是當您需要速度或在金屬附近工作時,它們是無價的。他們揭示了角色數(shù)據(jù)如何真正存儲和操縱。

了解它們可以幫助您:

  • 閱讀遺產(chǎn)或系統(tǒng)代碼
  • 優(yōu)化緊密循環(huán)
  • 感謝如何實施高級功能

一旦看到'a' ^ 'A' == 32' ,它就不再是魔術(shù)了,開始成為機械師。

基本上,這並不是要用碎屑做所有事情,而是要知道何時有些正確的工具。

以上是揭開低級字符串修改的位於位置操作的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
Jul 26, 2025 am 06:04 AM

UsedynamicpaddingwithpadStart()orpadEnd()basedoncontext,avoidover-padding,chooseappropriatepaddingcharacterslike'0'fornumericIDs,andhandlemulti-byteUnicodecharacterscarefullyusingtoolslikeIntl.Segmenter.2.Applytrimmingintentionally:usetrim()forbasicw

PHP的字符串分裂,加入和令牌功能的指南 PHP的字符串分裂,加入和令牌功能的指南 Jul 28, 2025 am 04:41 AM

使用explode()進行簡單字符串分割,適用於固定分隔符;2.使用preg_split()進行正則分割,支持複雜模式;3.使用implode()將數(shù)組元素連接成字符串;4.使用strtok()逐次解析字符串,但需注意其內(nèi)部狀態(tài);5.使用sscanf()提取格式化數(shù)據(jù),preg_match_all()提取所有匹配的模式。根據(jù)輸入格式和性能需求選擇合適的函數(shù),簡單場景用explode()和implode(),複雜模式用preg_split()或preg_match_all(),分步解析用strto

可鍊式的弦樂操作:PHP中流利的界面方法 可鍊式的弦樂操作:PHP中流利的界面方法 Jul 27, 2025 am 04:30 AM

使用鍊式字符串操作可提升代碼可讀性、可維護性和開發(fā)體驗;2.通過構(gòu)建返回實例的鍊式方法實現(xiàn)流暢接口;3.Laravel的Stringable類已提供強大且廣泛使用的鍊式字符串處理功能,推薦在實際項目中採用此類模式以增強代碼表達力並減少冗餘函數(shù)嵌套,最終使字符串處理更直觀高效。

有效修改大字符串而沒有內(nèi)存開銷 有效修改大字符串而沒有內(nèi)存開銷 Jul 28, 2025 am 01:38 AM

提高效率的ModifylargestringswithouthighMemoryUsage,UseMutableStringBuilderSorbuffers,ProcessStringSinchunkSviasTreaming,devery interniontermediatiateptringcopies,andChoosefliceDataTrasturstructuresLikeropes;特別是:1)useio.stringio.stringioorlistacccumulationInplelulationInpleluntimpyInpyinpyinnypyinnypyinnypyinnypyintypyinnypyinnypyinnypyinnypyinty

處理UTF-8:深入研究多型字符串修改 處理UTF-8:深入研究多型字符串修改 Jul 27, 2025 am 04:23 AM

tosafelyManipulateUtf-8 Strings,Youmustusemultibyte-awarefunctionsbecausestandArdStringerationsAssumeOneBytyByTeperCharacter,whi Chcorruptsmultibytecharactersinutf-8; 1.AlwaysusuniCode-safunctionsLikemb_substr()andmb_strlen()inphpwith'utf-8'encodingspe

php字符串的消毒和轉(zhuǎn)換用於安全輸入處理 php字符串的消毒和轉(zhuǎn)換用於安全輸入處理 Jul 28, 2025 am 04:45 AM

wanswdsanitizeInputingfilter_var()withappreapfilterslikefilter_sanitize_emailorfilter_sanitize_url,andValidataTefterward withfilter_validate_email; 2.EscapeOutputwithhtmlspecialchars()forhtmlContextSandjson_encode()withjson_hex_hex_tagforjavascripttop

現(xiàn)代PHP中的戰(zhàn)略弦線解析和數(shù)據(jù)提取 現(xiàn)代PHP中的戰(zhàn)略弦線解析和數(shù)據(jù)提取 Jul 27, 2025 am 03:27 AM

Preferbuilt-instringfunctionslikestr_starts_withandexplodeforsimple,fast,andsafeparsingwhendealingwithfixedpatternsorpredictableformats.2.Usesscanf()forstructuredstringtemplatessuchaslogentriesorformattedcodes,asitoffersacleanandefficientalternativet

揭開低級字符串修改的位於位置操作 揭開低級字符串修改的位於位置操作 Jul 26, 2025 am 09:49 AM

BitwisePerationsCanbeusedForefficientsTringManipulationInAsciibyIbyDirectlyModifyingingCharacterBits.1.TotogGlecase,usexorwith32:' a'^32 ='a',and'a'^32 ='a',啟用fastCaseConversionwithOutBranching.2.useandwith32tocheckifacharacterislowercase,orandwith?32t

See all articles