初學C不是很懂
目前有一個字串型的uint8,怎么把它轉成uint8數呢?
uj5u.com熱心網友回復:
請上代碼來說明問題。uj5u.com熱心網友回復:
比如說char *a ="0xff"
怎么轉成uint8_t型別?
uj5u.com熱心網友回復:
不用轉,因為char和uint8都是1個位元組的長度。如果說要轉的話,可能是型別強制轉換了,但是這樣不會改變記憶體里的內容。uj5u.com熱心網友回復:
uint8_t n;
const char* str = "0xff";
sscanf(str, "%hhx", &n);
uj5u.com熱心網友回復:
電腦記憶體或檔案內容或傳輸內容只是一個一維二進制位元組陣列及其對應的二進制地址;人腦才將電腦記憶體或檔案內容或傳輸內容中的這個一維二進制位元組陣列及其對應的二進制地址的某些部分看成是整數、有符號數/無符號數、浮點數、復數、英文字母、阿拉伯數字、中文/韓文/法文……字符/字串、匯編指令、函式、函式引數、堆、堆疊、陣列、指標、陣列指標、指標陣列、陣列的陣列、指標的指標、二維陣列、字符點陣、字符筆畫的坐標、黑白二值圖片、灰度圖片、彩色圖片、錄音、視頻、指紋資訊、身份證資訊……
推薦使用WinHex軟體查看硬碟或檔案或記憶體中的原始位元組內容。
uj5u.com熱心網友回復:
噢,那就直接強轉就可以了吧
uj5u.com熱心網友回復:
我這就去試試
uj5u.com熱心網友回復:
這不一樣呢,a是指向的字串,0xff和"0xff"是不一樣的。
我說的一樣是這樣的:char a = 0xff; uint8_t b = a;或者uint8_t b = 0xff;此時的a和b是一樣的在記憶體里。
uj5u.com熱心網友回復:
當然char *a = "0xff";和uint8_t *b = "0xff";是一樣的。
同理char a[] = "0xff"和uint8_t b[] = "0xff";記憶體是一樣的(即陣列a和陣列b中的內容是一樣的)
uj5u.com熱心網友回復:
相當于寫了一個uint8的指標指向了"0xff"嗎
uj5u.com熱心網友回復:
uint8_t n;
const char* str = "0xff";
sscanf(str, "%hhx", &n);
我這就去試試
太好了可以,謝謝
uj5u.com熱心網友回復:
所以說不上代碼的話,樓主你的原始說法容易造成誤解哦。uj5u.com熱心網友回復:
比如說
char *a ="0xff"
怎么轉成uint8_t型別?
當然char *a = "0xff";和uint8_t *b = "0xff";是一樣的。
同理char a[] = "0xff"和uint8_t b[] = "0xff";記憶體是一樣的(即陣列a和陣列b中的內容是一樣的)
相當于寫了一個uint8的指標指向了"0xff"嗎
對
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268077.html
標籤:C語言
上一篇:開發一個游戲聯機對戰平臺大概需要多少預算,歡迎大佬私信
下一篇:列舉與模擬內容總結
