用UE的人都會覺得16進制顯示文件灰常方便。為啥捏?當你要對文件加密、轉碼、編碼的時候,蹦出一堆01二進制看著都會頭大。畢竟十六進制顯示文件簡短方便。至少中考高考時涂過卡吧,1+2+4+8能算明白是幾吧。當然,那些中考和高考都能把1248碼都涂錯的童鞋們,一看就知道它們果斷與程序猿這個“神?!钡穆殬I無緣哈……
因為之前試著參加過科普創新大賽,當時做的咚咚是把文件以字節流讀入,并轉化成二進制、四進制、十六進制字符串,然后刷的一下子輸出到控制臺。再根據每個位的值,分別以2色、4色、16色的矩陣顯示。寫這個的目的是為了用攝像頭識別,然后再還原成字節流寫到文件里。這個程序設計是兩個蛋疼的事實雜交出的產物――1.要求不通過任何介質和USB設備傳輸文件;2.zxing和QRCode有時會找不到二維碼(QRCode更容易出錯)。大家可以試試這個題目,用攝像頭或者揚聲器發送接收文件,看誰傳得快,題目確實蠻有意思的呢。
當然,最重要的部分是進制轉化了,讀入文件的字節流byte 8位,用兩個16進制顯示。因為可能會遇到byte轉int后為補碼的情況,所以最好先統一成正數,方法其實很簡單啦,一個與運算就搞定!
弄出這個,轉成N進制字符串就不是啥難事了。仔細想想,是不是有個熟悉而又陌生的類直接就帶這個功能呢?沒錯,就是用Integer來實現!但是先別急,用它之前,還得對這個int搞點小動作。
你可以試試這個看看所有byte變16進制后的輸出
所以,最后把byte轉化成二位16進制的代碼是
接下來就是用矩陣晶格一幀幀顯示文件,用攝像頭拍下識別顏色,再轉換會字符串,并反饋個顏色讓對方知道識別完了好換下一張圖……如此循環,直到矩陣晶格顯示文件已經結束。這部分代碼我就不貼出來了,整個過程可以靠豐富的想象力YY出來吧……
然后是字符串轉回字節流,這就是簡單活了
新聞熱點
疑難解答