java byte 型 轉化成十六進製制輸出

2021-06-14 22:16:57 字數 1116 閱讀 8945

byte a = 18;

system.out.println(integer.tohexstring(a));

輸出結果為:12,12的二進位制形式為:0001 0010 等於十進位制 18

byte a = 18;

//得到高四位

int hi = ((a>>4)&0x0f);

//得到低四位

int lo = (a&0x0f);

char hex = new char[2];

//如果高四位是大於9的,將其轉換成字元a-z, 最後要將得到的轉換成字元(char)型別,不然得到的是二進位制數

hex[0] = hi>9?(char)(hi - 10 + 'a'):(char)(hi + '0');

hex[1] = lo>9?(char)(lo - 10 + 'a'):(char)(lo + '0');

system.out.println(new string(hex));

輸出結果為:12

這種方法是分別得到高四位,在得到低四位,再分別求十六進製制,最後組合起來。先使a左移四位,使得高四位移到第四位的位置,高四位補0,在和0x0f相與,使得新的高四位全部為0。

注:byte型別是乙個位元組,乙個位元組為8位,4位能表示乙個十六進製制

如果我們將上述兩種中的a的值改為-30,則會看到兩種輸出結果。

第一種輸出結果為:ffffffe2

第二種輸出結果為:e2

經過對比我們會發現,第一種的結果比第二種多出了6個f, 這是因為計算機(32位機)中是以補碼的形式儲存的,

也就是說-30 在計算機中儲存形式為1111 1111 1111 1111 1111 1111 1110 0010將這個二進位制轉化成為16進製制就是ffffe2。

解決方法:

1. 使用第二種方法(推薦)

2. 如果想使用第一種方法,使用下面的**

system.out.println( (integer.tohexstring(( a& 0x000000ff) | 0xffffff00)).substring(6));

CString 型轉化成 BSTR 型

當我們使用 activex 控制項程式設計時,經常需要用到將某個值表示成 bstr 型別。我們先來看看variant typedef tagvariant variant struct tagvariant variant name 4 variant name 3 variant name 2 d...

漢字轉化成拼音

漢字轉化為拼音類 people new pinyin echo people output 張珊 class pinyin 漢字轉化並輸出拼音 param string str 所要轉化拼音的漢字 param boolean utf8 漢字編碼是否為utf8 return string public...

C 字串轉化成浮點型

char szstring 3.1415926535898 atof szstring sscanf szstring2,lf db2 1.常見用法。char buf 512 sscanf 123456 s buf 此處buf是陣列名,它的意思是將123456以 s的形式存入buf中!printf ...