亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java編程實現對十六進制字符串異或運算代碼示例

2024-07-13 10:15:13
字體:
來源:轉載
供稿:網友

前言:好久沒有寫博客,最近一年感覺真是好忙,各種做不完的工作。相信很多上班族都會有這種感覺。最近對NFC進行寫卡操作,需要計算一個校驗位。一般情況下,校驗位多數是由前幾個字節進行異或運算所得。

現在我就先說一下我使用的場景:

把一個16字節的數據寫到CPU卡(如交通卡)里面,最后一字節是校驗碼---前十五字節異或。

我開始從網上找了一些別人寫的算法發現計算后結果不對,或者就是寫的太復雜了,于是自己就寫了一個,感覺也比較簡單,現在分享給大家,希望一起交流一下。

第一節:什么是異或運算(主要摘自百度百科,熟悉的童靴可以跳過)

定義:

異或,英文為exclusiveOR,或縮寫成xor

異或(xor)是一個數學運算符。它應用于邏輯運算。異或的數學符號為“⊕”,計算機符號為“xor”。其運算法則為:

a⊕b=(¬a∧b)∨(a∧¬b)

如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。

異或也叫半加運算,其運算法則相當于不帶進位的二進制加法:二進制下用1表示真,0表示假,則異或的運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進位。

異或略稱為XOR、EOR、EX-OR

程序中有三種演算子:XOR、xor、⊕。

使用方法如下

z=x⊕y

z=xxory

運算規則:

1.a⊕a=0

2.a⊕b=b⊕a

3.a⊕b⊕c=a⊕(b⊕c)=(a⊕b)⊕c;

4.d=a⊕b⊕c可以推出a=d⊕b⊕c.

5.a⊕b⊕a=b.

6.若x是二進制數0101,y是二進制數1011

則x⊕y=1110

只有在兩個比較的位不同時其結果是1,否則結果為0

即“兩個輸入相同時為0,不同則為1”!

邏輯:

邏輯表達式:F=AB'⊕A'B((AB'⊕A'B)'=AB⊙A'B',⊙為“同或”運算)

異或邏輯的真值表如圖1所

示,其邏輯符號如圖2所示。異或邏輯的關系是:當AB不同時,輸出P=1;當AB相同時,輸出P=0。“⊕”是異或運算符號,異或邏輯也是與或非邏輯的組合,其邏輯表達式為:

P=A⊕B

由圖1可知,異或運算的規則是

0⊕0=0,0⊕1=1

1⊕0=1,1⊕1=0

口訣:相同取0,相異取1

事實上,XOR在英文里面的定義為eitherone(isone),butnotboth,也即只有一個為真(1)時,取真(1)。

作用:

在計算機中普遍運用,異或(xor)的邏輯符號一般用xor,也有用⊕的:

真⊕假=真

假⊕真=真

假⊕假=假

真⊕真=假

或者為:

True⊕False=True

False⊕True=True

False⊕False=False

True⊕True=False

部分計算機語言用1表示真,用0表示假,所以兩個字節按位異或如下

java,十六進制異或,異或加密,字符串,字符串異或運算

下面是兩個二進制數值進行異或計算:

java,十六進制異或,異或加密,字符串,字符串異或運算

現實中用的都是十進制的數值,那么我們來看一看兩個十進制數值是怎么進行異或計算:

5⊕2=?

1.進行異或計算前會把數值都轉換為二進制的:

5和2轉為二進制分別為:0101、0010

java,十六進制異或,異或加密,字符串,字符串異或運算

2.再把結果0111轉換為十進制的:7

3.所以5⊕2=7

巧用:

與其它語言不同,C語言和C++語言的異或不用xor,而是用“^”,鍵入方式為Shift+6。(而其它語言的“^”一般表示乘方)

若需要交換兩個變量的值,除了通常使用的借用中間變量進行交換外,還可以利用異或,僅使用兩個變量進行交換,如:

java/240382.html">java;">a=a^b;b=b^a;a=a^b;

詳解:

a1=a^bb=a1^ba=a1^b=a1^(a1^b)=a1^a1^b=b

注意:

a=a^b^(b=a);//此類形式是不正確的UB行為,在不同編譯器中會有不同的結果,切勿使用

這樣就完成了a與b的交換。

綜上:同一變量與另一變量和其異或值異或等于自身。

用例:可使用于加密算法某一環節或更多環節,使算法更復雜,不易被破解,安全性更高。[1]

第二節:用java語言實現:

private static String xor(String strHex_X,String strHex_Y){	//將x、y轉成二進制形式  	String anotherBinary=Integer.toBinaryString(Integer.valueOf(strHex_X,16));	String thisBinary=Integer.toBinaryString(Integer.valueOf(strHex_Y,16));	String result = "";	//判斷是否為8位二進制,否則左補零  	if(anotherBinary.length() != 8){		for (int i = anotherBinary.length(); i <8; i++) {			anotherBinary = "0"+anotherBinary;		}	}	if(thisBinary.length() != 8){		for (int i = thisBinary.length(); i <8; i++) {			thisBinary = "0"+thisBinary;		}	}	//異或運算  	for (int i=0;i<anotherBinary.length();i++){		//如果相同位置數相同,則補0,否則補1  		if(thisBinary.charAt(i)==anotherBinary.charAt(i))  		            result+="0"; else{			result+="1";		}	}	Log.e("code",result);	return Integer.toHexString(Integer.parseint(result, 2));}

注意:以上方法是針對一個十六進制字符串一字節之間的異或運算,如對十五字節的十六進制字符串異或運算:

1312f70f900168d900007df57b4884
先進行拆分:13 12 f7 0f 90 01 68 d9 00 00 7d f5 7b 48 84
13 xor 12-->1
1 xor f7-->f6
f6 xor 0f-->f9
....
62 xor 84-->e6

即,得到的一字節校驗碼為:e6
補充,給一些朋友增加了一個簡單的調用方法,僅供參考:

public String checkcode_0007(String para){	String[] dateArr = new String[15];	try {		dateArr[0] = para.substring(0, 2);		dateArr[1] = para.substring(2, 4);		dateArr[2] = para.substring(4, 6);		dateArr[3] = para.substring(6, 8);		dateArr[4] = para.substring(8, 10);		dateArr[5] = para.substring(10, 12);		dateArr[6] = para.substring(12, 14);		dateArr[7] = para.substring(14, 16);		dateArr[8] = para.substring(16, 18);		dateArr[9] = para.substring(18, 20);		dateArr[10] = para.substring(20, 22);		dateArr[11] = para.substring(22, 24);		dateArr[12] = para.substring(24, 26);		dateArr[13] = para.substring(26, 28);		dateArr[14] = para.substring(28, 30);	}	catch (Exception e) {		// TODO: handle exception	}	String code = "";	for (int i = 0; i < dateArr.length-1; i++) {		if(i == 0){			code = xorString(dateArr[i], dateArr[i+1]);		} else{			code = xorString(code, dateArr[i]);		}	}	return code;}

然后再主函數或者其他方法里面調用:

String code = checkcode_0007("1312f70f900168d900007df57b4884"); 

code就是獲取的校驗碼了。

總結

以上就是本文關于Java編程實現對十六進制字符串異或運算代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久女人电视剧免费播放下载| 色狠狠av一区二区三区香蕉蜜桃| 97超级碰在线看视频免费在线看| 国产精品极品尤物在线观看| 国产xxx69麻豆国语对白| 成人欧美一区二区三区在线| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久久婷婷天堂| 亚洲美女中文字幕| 国产精品高精视频免费| 97视频在线观看免费| 久久久久久九九九| 中文字幕日韩av| 欧美电影免费观看网站| 欧美成人网在线| 蜜臀久久99精品久久久久久宅男| 在线观看久久久久久| 91精品久久久久久久久青青| 精品在线观看国产| 欧美激情国内偷拍| 日韩电影中文 亚洲精品乱码| 日本三级韩国三级久久| 亚洲福利视频二区| 亚洲一区二区国产| 91精品国产乱码久久久久久蜜臀| 91av网站在线播放| 一本色道久久综合亚洲精品小说| 国语自产偷拍精品视频偷| 中文字幕精品久久| 中文字幕日韩在线播放| 国产亚洲精品久久久久久777| 欧美日韩在线视频一区| 国产最新精品视频| 久久久91精品国产一区不卡| 亚洲精品动漫100p| 国产91在线高潮白浆在线观看| 欧美成人免费全部| 日韩免费在线视频| 日韩av资源在线播放| 亚洲三级免费看| 一道本无吗dⅴd在线播放一区| 久久男人资源视频| 亚洲全黄一级网站| 大胆欧美人体视频| 538国产精品视频一区二区| 日韩av在线影视| 色偷偷噜噜噜亚洲男人| 国产精品久久久一区| 日韩乱码在线视频| 日韩中文字幕在线免费观看| 精品国产依人香蕉在线精品| 色哟哟入口国产精品| 国产精品羞羞答答| 在线丨暗呦小u女国产精品| 国模精品系列视频| 富二代精品短视频| 亚洲成人久久一区| 国产视频在线一区二区| 日韩av一卡二卡| 欧美性在线视频| 国产一区二区三区免费视频| 欧美激情亚洲综合一区| 日韩大片在线观看视频| 成人黄色生活片| 亚洲精品视频网上网址在线观看| www.精品av.com| 国语自产精品视频在线看一大j8| 亚洲激情中文字幕| 97国产精品免费视频| 精品国产拍在线观看| 不卡伊人av在线播放| 亚洲精品国产精品久久清纯直播| 久久精品中文字幕电影| 97av在线视频免费播放| 欧美日韩中文字幕在线视频| 精品国产自在精品国产浪潮| 亚洲香蕉在线观看| 91av视频导航| 久久久久免费精品国产| 欧美综合第一页| 亚洲国产精品久久| 中日韩美女免费视频网址在线观看| 欧美黑人又粗大| 精品毛片网大全| 日韩综合视频在线观看| 精品亚洲夜色av98在线观看| 在线观看中文字幕亚洲| 久久精品中文字幕免费mv| 69久久夜色精品国产7777| 欧美在线播放视频| 精品国产乱码久久久久久婷婷| 国产美女久久精品香蕉69| 精品高清美女精品国产区| 久久精品视频网站| 国产精品影片在线观看| 国外成人免费在线播放| 色综合久综合久久综合久鬼88| 色中色综合影院手机版在线观看| 日韩成人激情视频| 亚洲一区二区黄| 日韩高清电影免费观看完整版| 久久国产精品免费视频| 插插插亚洲综合网| www.久久久久久.com| 91高清免费视频| 亚洲毛片在线观看.| 亚洲高清一二三区| 国产欧美va欧美va香蕉在| 欧美精品成人在线| 国产精品av网站| 久久久噜噜噜久久中文字免| 91午夜理伦私人影院| 国产精品1区2区在线观看| 中文字幕在线亚洲| 美日韩在线视频| 亚洲国产精品久久久久秋霞不卡| 欧美重口另类videos人妖| 中文字幕精品网| 久久久久久久久久久久久久久久久久av| 日韩va亚洲va欧洲va国产| 国产精品老牛影院在线观看| 国产人妖伪娘一区91| 中文字幕无线精品亚洲乱码一区| 亚洲一区二区久久久久久久| 九九热这里只有精品免费看| 91国产精品91| www.亚洲免费视频| 久久久久久久久国产| 在线看国产精品| 欧美激情视频三区| 搡老女人一区二区三区视频tv| 国产精品亚洲第一区| 国产成人小视频在线观看| 国产精品一区二区三区免费视频| 精品人伦一区二区三区蜜桃免费| 欧美激情一区二区三区高清视频| 精品国产欧美一区二区三区成人| 国产精品自产拍在线观| 日韩av色综合| 亚洲一区二区三区在线免费观看| 日韩免费观看高清| 日韩国产欧美精品一区二区三区| 亚洲成色777777女色窝| 国产精品视频久久久| 中文字幕日韩精品有码视频| 91久久在线视频| 91精品美女在线| 国产精品爽黄69| 久久99精品视频一区97| 国产精品久久久久aaaa九色| 精品国内产的精品视频在线观看| 91亚洲一区精品| 中文字幕亚洲综合久久| 欧美激情亚洲另类| 国产成人综合久久| 欧美日本国产在线| 欧美精品情趣视频| 一区二区三区精品99久久| 最新国产精品拍自在线播放| 少妇av一区二区三区| 91久久综合亚洲鲁鲁五月天| 日韩欧美在线免费观看| 国产精品爽黄69| 亚洲国产天堂网精品网站|