欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

16進(jìn)制顯示字節(jié)流技巧分享

 更新時(shí)間:2014年02月28日 15:33:33   投稿:zxhpj  
這篇文章主要介紹了16進(jìn)制顯示字節(jié)流的技巧分享,需要的朋友可以參考下

用UE的人都會(huì)覺(jué)得16進(jìn)制顯示文件灰常方便。為啥捏?當(dāng)你要對(duì)文件加密、轉(zhuǎn)碼、編碼的時(shí)候,蹦出一堆01二進(jìn)制看著都會(huì)頭大。畢竟十六進(jìn)制顯示文件簡(jiǎn)短方便。至少中考高考時(shí)涂過(guò)卡吧,1+2+4+8能算明白是吧。當(dāng)然,那些中考和高考都能把1248碼都涂錯(cuò)的童鞋們,一看就知道它們果斷與程序猿這個(gè)“神剩”的職業(yè)無(wú)緣哈……

因?yàn)橹霸囍鴧⒓舆^(guò)科普創(chuàng)新大賽,當(dāng)時(shí)做的咚咚是把文件以字節(jié)流讀入,并轉(zhuǎn)化成二進(jìn)制、四進(jìn)制、十六進(jìn)制字符串,然后刷的一下子輸出到控制臺(tái)。再根據(jù)每個(gè)位的值,分別以2色、4色、16色的矩陣顯示。寫(xiě)這個(gè)的目的是為了用攝像頭識(shí)別,然后再還原成字節(jié)流寫(xiě)到文件里。這個(gè)程序設(shè)計(jì)是兩個(gè)事實(shí)雜交出的產(chǎn)物——1.要求不通過(guò)任何介質(zhì)和USB設(shè)備傳輸文件;2.zxing和QRCode有時(shí)會(huì)找不到二維碼(QRCode更容易出錯(cuò))。大家可以試試這個(gè)題目,用攝像頭或者揚(yáng)聲器發(fā)送接收文件,看誰(shuí)傳得快,題目確實(shí)蠻有意思的呢。

當(dāng)然,最重要的部分是進(jìn)制轉(zhuǎn)化了,讀入文件的字節(jié)流byte 8位,用兩個(gè)16進(jìn)制顯示。因?yàn)榭赡軙?huì)遇到byte轉(zhuǎn)int后為補(bǔ)碼的情況,所以最好先統(tǒng)一成正數(shù),方法其實(shí)很簡(jiǎn)單啦,一個(gè)與運(yùn)算就搞定!

復(fù)制代碼 代碼如下:

int result = bytes&0xff;

別小看這個(gè)語(yǔ)句,其實(shí)這個(gè)語(yǔ)句很有意思的。仔細(xì)想想,為神馬加了個(gè)0xff就變成正數(shù)呢?0xff每個(gè)位都是1,那與運(yùn)算不就等于沒(méi)變化么?哼哼,之前還真有人這么問(wèn)過(guò)我,如果真有這樣的問(wèn)題,那就是java基礎(chǔ)不牢固了。byte的范圍是-128~127,不是0~255,所以嘛,像byte b= -42;這樣的賦值肯定不能用byte b= 214;來(lái)替代了。

弄出這個(gè),轉(zhuǎn)成N進(jìn)制字符串就不是啥難事了。仔細(xì)想想,是不是有個(gè)熟悉而又陌生的類(lèi)直接就帶這個(gè)功能呢?沒(méi)錯(cuò),就是用Integer來(lái)實(shí)現(xiàn)!但是先別急,用它之前,還得對(duì)這個(gè)int搞點(diǎn)小動(dòng)作。

復(fù)制代碼 代碼如下:

( bytes & 0xff ) + 0x100

知道這是為什么?這個(gè)就是+256啊,只是為了看得直觀些,就是前面加上一位。因?yàn)槟愕玫降膇nt轉(zhuǎn)成String的話很可能只有一個(gè)位,也就是byte轉(zhuǎn)16進(jìn)制時(shí)丟了一位,那整個(gè)程序豈不就全錯(cuò)位了?安全起見(jiàn),還是先統(tǒng)一成三位吧。

你可以試試這個(gè)看看所有byte變16進(jìn)制后的輸出

復(fù)制代碼 代碼如下:

public static void main(String[] args) {
for (int i = -128; i < 128; i++) {
byte b=(byte)i;
System.out.println( Integer.toString( ( b & 0xff ), 16));
}
}

看到這里,你會(huì)不會(huì)想:你怎么這么笨呢?for循環(huán)里的int為什么不改成byte,不就省了一行代碼了么,多大的便宜啊!可以呀,你試試唄,反正我是不會(huì)去試的……

所以,最后把byte轉(zhuǎn)化成二位16進(jìn)制的代碼是

復(fù)制代碼 代碼如下:

Integer.toString( ( bytes & 0xff ) + 0x100, 16).substring( 1 );

對(duì)于2進(jìn)制,4進(jìn)制,8進(jìn)制,都是一個(gè)道理,我就不舉例了。一句代碼就實(shí)現(xiàn)了,很神奇吧……

接下來(lái)就是用矩陣晶格一幀幀顯示文件,用攝像頭拍下識(shí)別顏色,再轉(zhuǎn)換會(huì)字符串,并反饋個(gè)顏色讓對(duì)方知道識(shí)別完了好換下一張圖……如此循環(huán),直到矩陣晶格顯示文件已經(jīng)結(jié)束。這部分代碼我就不貼出來(lái)了,整個(gè)過(guò)程可以靠豐富的想象力YY出來(lái)吧……

然后是字符串轉(zhuǎn)回字節(jié)流,這就是簡(jiǎn)單活了

復(fù)制代碼 代碼如下:

(byte)Integer.parseInt(string, 16)

連位運(yùn)算都不用,直接就出結(jié)果,把它們放到字節(jié)數(shù)組里,用FileOutputStream的write反復(fù)的寫(xiě)就可以了!別忘了關(guān)閉輸入輸出流哈

相關(guān)文章

  • Java實(shí)現(xiàn)雙向鏈表(兩個(gè)版本)

    Java實(shí)現(xiàn)雙向鏈表(兩個(gè)版本)

    這篇文章主要介紹了Java實(shí)現(xiàn)雙向鏈表(兩個(gè)版本)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 基于maven install 沒(méi)反應(yīng)的解決方法

    基于maven install 沒(méi)反應(yīng)的解決方法

    下面小編就為大家?guī)?lái)一篇基于maven install 沒(méi)反應(yīng)的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java中Comparable與Comparator的區(qū)別解析

    Java中Comparable與Comparator的區(qū)別解析

    這篇文章主要介紹了Java中Comparable與Comparator的區(qū)別解析,實(shí)現(xiàn)Comparable接口,重寫(xiě)compareTo方法,一般在實(shí)體類(lèi)定義的時(shí)候就可以選擇實(shí)現(xiàn)該接口,提供一個(gè)默認(rèn)的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以參考下
    2024-01-01
  • Spring Boot中使用Spring-data-jpa實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪查改

    Spring Boot中使用Spring-data-jpa實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪查改

    本篇文章主要介紹了Spring Boot中使用Spring-data-jpa實(shí)現(xiàn)增刪查改,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-03-03
  • SpringBoot數(shù)據(jù)層處理方案精講

    SpringBoot數(shù)據(jù)層處理方案精講

    這篇文章主要介紹了SpringBoot數(shù)據(jù)層技術(shù)的解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • java中HashSet的特點(diǎn)及實(shí)例用法

    java中HashSet的特點(diǎn)及實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于java中HashSet的特點(diǎn)及實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • SpringBoot中使用configtree讀取樹(shù)形文件目錄中的配置詳解

    SpringBoot中使用configtree讀取樹(shù)形文件目錄中的配置詳解

    這篇文章主要介紹了SpringBoot中使用configtree讀取樹(shù)形文件目錄中的配置詳解,configtree通過(guò)spring.config.import?+?configtree:前綴的方式,加載以文件名為key、文件內(nèi)容為value的配置屬性,需要的朋友可以參考下
    2023-12-12
  • Java實(shí)現(xiàn)多個(gè)數(shù)組間的排列組合

    Java實(shí)現(xiàn)多個(gè)數(shù)組間的排列組合

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多個(gè)數(shù)組間的排列組合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換

    Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換

    這篇文章主要介紹了Java實(shí)現(xiàn)字符串和輸入流的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java SpringMVC異步處理詳解

    Java SpringMVC異步處理詳解

    這篇文章主要介紹了Java springmvc的處理異步,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10

最新評(píng)論