2011-06-09 65 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。否则你可以稍微改变它。

相关问题