如何用c语言交换以下两个十六进制数字?例如:
输入:0xabcd
输出:0xcdab
答案 0 :(得分: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
。
答案 1 :(得分:0)
什么平台? Windows提供各种大小的_byte_swap
。否则你可以稍微改变它。
答案 2 :(得分:-2)
我的一位教授向我展示了这种用于交换整数的小巧技巧,我总是觉得优雅:
int x = 5;
int y = 7;
x = x ^ y;
y = x ^ y;
x = x ^ y; // x = 7, y = 5