最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

int result = bytes&0xff;

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

弄出這個,轉(zhuǎn)成N進制字符串就不是啥難事了。仔細想想,是不是有個熟悉而又陌生的類直接就帶這個功能呢?沒錯,就是用Integer來實現(xiàn)!但是先別急,用它之前,還得對這個int搞點小動作。

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

( bytes & 0xff ) + 0x100

知道這是為什么?這個就是+256啊,只是為了看得直觀些,就是前面加上一位。因為你得到的int轉(zhuǎn)成String的話很可能只有一個位,也就是byte轉(zhuǎn)16進制時丟了一位,那整個程序豈不就全錯位了?安全起見,還是先統(tǒng)一成三位吧。

你可以試試這個看看所有byte變16進制后的輸出

復(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));
}
}

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

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

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

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

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

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

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

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

(byte)Integer.parseInt(string, 16)

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

相關(guān)文章

  • Java 數(shù)據(jù)結(jié)構(gòu)線性表之順序存儲詳解原理

    Java 數(shù)據(jù)結(jié)構(gòu)線性表之順序存儲詳解原理

    線性表的順序存儲是指用一組地址連續(xù)的存儲單元依次存儲線性表中的各個元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲在相鄰的物理存儲單元中,即通過數(shù)據(jù)元素物理存儲的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系
    2021-10-10
  • IDEA調(diào)試功能使用總結(jié)(step?over/step?into/force?step?into/step?out)

    IDEA調(diào)試功能使用總結(jié)(step?over/step?into/force?step?into/step?o

    本文主要介紹了IDEA調(diào)試功能使用總結(jié)(step?over/step?into/force?step?into/step?out),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • java兩種單例模式用法分析

    java兩種單例模式用法分析

    這篇文章主要介紹了java兩種單例模式用法,結(jié)合實例形式對比分析了java實現(xiàn)單例模式的兩種常見技巧,需要的朋友可以參考下
    2016-08-08
  • SpringBoot集成SpirePDF實現(xiàn)文本替換功能

    SpringBoot集成SpirePDF實現(xiàn)文本替換功能

    SpirePDF是一個用于.NET平臺的高級PDF文檔處理庫,它提供了一套完整的API,允許開發(fā)者創(chuàng)建、編輯、轉(zhuǎn)換、合并、分割和解析PDF文件本文給大家介紹了SpringBoot集成SpirePDF實現(xiàn)文本替換功能,需要的朋友可以參考下
    2024-09-09
  • 詳解Java是如何通過接口來創(chuàng)建代理并進行http請求

    詳解Java是如何通過接口來創(chuàng)建代理并進行http請求

    今天給大家?guī)淼闹R是關(guān)于Java的,文章圍繞Java是如何通過接口來創(chuàng)建代理并進行http請求展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringBoot整合jasypt實現(xiàn)數(shù)據(jù)加密的步驟

    SpringBoot整合jasypt實現(xiàn)數(shù)據(jù)加密的步驟

    聽說過jasypt嗎?它可是一個超級流行的Java庫哦,提供了簡單又高效的加密和解密接口,整合jasypt后,我們的SpringBoot應(yīng)用就能輕松處理敏感數(shù)據(jù)的加密和解密,而不必為復(fù)雜的加密算法頭疼啦,下面給大家介紹SpringBoot整合jasypt實現(xiàn)數(shù)據(jù)加密的步驟,感興趣的朋友一起看看吧
    2025-04-04
  • Java使用BouncyCastle加密

    Java使用BouncyCastle加密

    本文主要介紹了Java使用BouncyCastle加密,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 如何通過idea實現(xiàn)springboot集成mybatis

    如何通過idea實現(xiàn)springboot集成mybatis

    這篇文章主要介紹了如何通過idea實現(xiàn)springboot集成mybatis,使用springboot 集成 mybatis后,通過http請求接口,使得通過http請求可以直接操作數(shù)據(jù)庫,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • Java泛型詳解

    Java泛型詳解

    本文給大家匯總介紹了下java中的泛型的相關(guān)資料,包括引入泛型機制的原因,泛型類,泛型方法,泛型的實現(xiàn)以及泛型的注意事項,非常的詳細,有需要的小伙伴可以參考下
    2016-03-03
  • JAVA 根據(jù)Url把多文件打包成ZIP下載實例

    JAVA 根據(jù)Url把多文件打包成ZIP下載實例

    這篇文章主要介紹了JAVA 根據(jù)Url把多文件打包成ZIP下載的相關(guān)資料,需要的朋友可以參考下
    2017-08-08

最新評論

阿拉尔市| 谷城县| 怀来县| 丹寨县| 台中县| 康乐县| 乌兰县| 治县。| 阜南县| 五家渠市| 临颍县| 安丘市| 枣强县| 满城县| 木兰县| 浙江省| 南充市| 新余市| 志丹县| 进贤县| 雅安市| 英超| 开封县| 乳源| 嘉禾县| 平罗县| 晴隆县| 中宁县| 福贡县| 大邑县| 蓝田县| 车险| 兴安盟| 桂林市| 白朗县| 宽甸| 本溪市| 万年县| 乳山市| 增城市| 乐昌市|