2017-07-10 120 views

回答

1

對於無符號16位整數:

unsigned short val16 = 0x1234; 
unsigned char enc[2]; 
enc[0] = val16 & 0xff;    // stores 0x34 to enc[0] 
enc[1] = val16 >> 8 & 0xff;   // stores 0x12 to enc[1] 

對於無符號32位整數:

unsigned int val32 = 0x12345678; 
unsigned char enc[4]; 
enc[0] = val32 & 0xff;    // stores 0x78 to enc[0] 
enc[1] = val32 >> 8 & 0xff;   // stores 0x56 to enc[1] 
enc[2] = val32 >> 16 & 0xff;  // stores 0x34 to enc[2] 
enc[3] = val32 >> 24 & 0xff;  // stores 0x12 to enc[3] 

更新

帶小數文字完全相同代碼爲:

unsigned short val16 = 4660;  // 4660 = 0x1234 
unsigned char enc[2]; 
enc[0] = val16 & 255; 
enc[1] = val16 >> 8 & 255; 

unsigned int val32 = 305419896; // 305419896 = 0x12345678 
unsigned char enc[4]; 
enc[0] = val32 & 255; 
enc[1] = val32 >> 8 & 255; 
enc[2] = val32 >> 16 & 255; 
enc[3] = val32 >> 24 & 255; 
+0

謝謝!是否有可能做到這一點,而不使用十六進制數據類型? – bigdog225

+0

@ bigdog225是的,當然。我在回答中使用了十六進制文字,以澄清2字節或4字節值中每個字節的邊界。您可以使用任何其他文字類型,例如小數。 – nglee

+0

我會如何做小數?如果你不介意給我看 – bigdog225

相關問題