我正在從DNS服務器獲取一些數據,並試圖將某個部分轉換爲無符號整數(表示刷新間隔,到期等)。通過轉換,我的意思是從大端到小端。問題是,還有ntohs地方只有2個字節的數據,而不是4使用ntohs的無符號整數
memcpy(&number, data, 4);
printf("%x ",number);
number = ntohs(number);
printf("%x ",number);
Output:
b6fc0b78 780b
關於類型:
:t data
char*
:t number
unsigned int
奇怪的是,即使通過嘗試使用位轉移到重建的數量,值是非常不同的:例如0。
如何從b6fc0b78中將780bfcb6轉換爲unsigned int?
Readig文檔可能會導致啓示。 – alk
我做到了。但是在我給出的文檔中,關於ntohs的唯一說法是它用於從網絡順序轉換爲主機順序。 –
如果在類似UNIX的系統上,類似終端窗口中輸入的'man ntohs'大多是一個很好的參考。 – alk