C 將byte轉換為string 16進製制

2021-06-26 21:05:00 字數 1168 閱讀 9397

實際上c++中byte就是unsigned char(無符號字元型別)。這裡補充說明char的區間範圍是(-128,127),但unsigned char的區間並非就是char的區間範圍,而是(0,255)。然而,對於16進製制來講一般都是用unsigned char來進行表示,因此,我們需要把unsigned char所表示的16進製制值用char型別來表示,從而實現將c++ byte 轉換成16進製制的string形式。

剛才我們已經給出了char的區間範圍和unsigned char的區間範圍,那麼我們在c++中將byte轉換成string的時候,就不用一位的方式來進行表示了,只能用兩位char來表示一位的unsigned char進行存放16進製制的值才能達到我們的目的。那麼根據16進製制的表示方式,0—9,a—f,那我們只需要將一位的unsigned char轉換成兩位的char就可以了。

那麼,在c++中,我們將用其支援的char和整形(int)的強制型別轉換即可。思路是:先把unsigned char借助int來做轉換,再把轉換後所得到的int型別值除以16,我們發現,得到的商和餘數是在0—9和a—f之間的,那麼我們只需要將這個轉換而得的商和餘數再轉換成字母,那麼我們就能夠順利的在c++中得到兩個字母表示的16進製制從而達到目的。

小結一下思路:第一步、借助c++支援的unsigned char 與int之間的強制轉換,把unsigned char強制轉換成int,得到轉換後的整形值;第二步、將這個整形值除以16取商和餘數;我們分別表示為s和y,再借助ascii碼把s和y轉換成字母即可。最後一步,把所得到的兩個字母連線起來就是16進製制的字串了。

c++具體的**實現如下:

**清單:

/*構造兩個引數,乙個是byte陣列,乙個是byte陣列對應的長度,目的是方便後續的for迴圈進行遍歷而不用再此判斷。*/

string* bytetohexstr(unsigned char byte_arr, int arr_len)

return hexstr;

}

//以下為更簡潔的寫法
string * byte2hex(usigned barray, int barray_len)

{ string *strhex = new stirng();

int nindex = 0;

for(int i=0; i

C 將 byte 轉換為對應的struct

using system.runtime.interopservices winapi引用命名空間 將byte轉換為結構體型別 public static object bytetostruct byte bytes,type type 分配結構體記憶體空間 intptr structptr mar...

C 將單個char轉換為string

參考 const char c a 1.使用 string 的建構函式 string s 1 c 2.宣告string 後將char push back string s1 s1.push back c 3.使用stringstream stringstream ss ss c string str...

string和byte 的轉換 C

string型別轉成byte 反過來,byte轉成string 其它編碼方式的,如system.text.utf8encoding,system.text.unicodeencoding class等 例如 string型別轉成ascii byte 01 轉成 byte new byte ascii...