我需要能夠將數值發送到遠程套接字服務器,因此我需要將可能的數字編碼爲字節。如何將數值編碼爲字節
這些數字最多爲64位,即最多需要8個字節。第一個字節是類型,它始終是255以下的數字,因此適合1個字節。
例如,如果數字是8並且類型是32位無符號整數,那麼類型將是7,它將被複制到第一個(最左邊的)字節,然後接下來的4個字節將用實際數字(在這種情況下爲8)。
所以以字節爲單位:
byte1: 7
byte2: 0
byte3: 0
byte4: 0
byte5: 8
我希望這是決策意識。
執行此編碼的代碼看起來是否合理?
int type = 7;
uint32_t number = 8;
unsigned char* msg7 = (unsigned char*)malloc(5);
unsigned char* p = msg7;
*p++ = type;
for (int i = sizeof(uint32_t) - 1; i >= 0; --i)
*p++ = number & 0xFF << (i * 8);
[不要在C中輸入'malloc'的結果](http://stackoverflow.com/q/605845/995714) –