2011-06-09 61 views
-2

可能重複:
server client :socket programming如何交換c語言中的十六進制數字?

我想在C語言交換follwoing 2個headecimal號碼?例如:輸入:0xabcd輸出:0xcdab

Regrds venkat

+2

...這是從已經回答的問題中編輯出來的。 – geoffspear 2011-06-09 13:10:25

+0

也:您的帖子中沒有必要的簽名。 – retrodrone 2011-06-09 13:10:25

+0

我回復了另一個問題;如果OP不再需要它,它應該被刪除,因爲那裏有答案。不幸的是,在注意到這一點之前,我已經投票結束了。 – geoffspear 2011-06-09 13:12:28

回答

2

您可以使用的東西線沿線的:

#include <stdio.h> 
int main (void) { 
    unsigned int from = 0xabcd; 
    unsigned int to = ((from & 0xff) << 8) | (from >> 8); 
    printf ("%04x\n", to); 
    return 0; 
} 

這個交換左右兩個字節,讓您的cdab輸出。

+0

謝謝................ – 2017-11-22 09:04:19

-2

我的一個教授向我展示了用於交換,我總是發現優雅整數該位擺弄技術:

int x = 5; 
int y = 7; 
x = x^y; 
y = x^y; 
x = x^y; // x = 7, y = 5 
+0

我很低調,但我想知道爲什麼至少。 – FishBasketGordo 2011-06-09 13:54:24

+1

我沒有downvote,但如果你看問題中的例子,它實際上是問如何交換字節順序,而不是如何交換兩個變量。另外,雖然異或技巧很聰明,但它通常比使用臨時變量更慢,更容易出錯。 – interjay 2011-06-09 15:02:28

+0

我將這個問題歸咎於措辭不佳的問題。 :)感謝您的反饋@interjay – FishBasketGordo 2011-06-09 15:04:43

0

什麼平臺? Windows提供各種尺寸的_byte_swap。否則你可以稍微改變它。

相關問題