我在這個問題上需要你的幫助:
我想在 char 陣列中存盤一個 2 位元組數我嘗試了以下 2 個邏輯,但都失敗了
字符緩沖區[10];
字符* ptr = buff;
/* 我想存盤一個 2 位元組的值,比如 750 方法 1 */
短a = 750;*( ptr)=a; //在緩沖區的前 2 個位元組中沒有得到這些值:0xffffffc8 0xffffffef
/* 方法二 */
短 *a=750; memcpy( ptr,a,2) // 出現分段錯誤
我知道我可以通過除以 256 來做到這一點,但我想使用更簡單的方法
*ptr =750/256;
*ptr=750%6;
uj5u.com熱心網友回復:
最簡單的方法很簡單:
uint16_t u16 = 12345;
memcpy(&buff[i], &u16, 2);
memcpy將根據您的CPU 位元組順序放置資料。
或者,您可以進行位移,但由于位移本身與位元組序無關,因此您需要buff根據位元組序手動選擇正確的索引。
像 Little Endian 這樣的記憶體布局:
buff[i] = u16 & 0xFFu;
buff[i 1] = (u16 >> 8) & 0xFFu;
像 Big Endian 這樣的記憶體布局:
buff[i] = (u16 >> 8) & 0xFFu;
buff[i 1] = u16 & 0xFFu;
uj5u.com熱心網友回復:
char buff[10];
short a=1023;
//To store in char array
buff[0] = a & 0xff;
buff[1] = (a >> 8) & 0xff;
// To get original value.
short b = ((buff[1] << 8) & 0xff00) | (buff[0] & 0x00ff);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450309.html
