1. 程式人生 > 實用技巧 >C 十六進數制反序

C 十六進數制反序

任意輸入四位十六進位制整數,以反序方式輸出

#include <stdio.h>

void fun1(unsigned short a) {
    unsigned short b;

    printf("========\t");
    printf("%#X\t", (unsigned short) (a << 12) >> 12 << 12);
    printf("%#X\t", (unsigned short) (a << 8) >> 12 << 8);
    printf("%#X\t
", (unsigned short) (a << 4) >> 12 << 4); printf("%#X\t", (unsigned short) (a << 0) >> 12 << 0); printf("========\t"); b = (unsigned short) (a << 12) >> 12 << 12; // D000 b += (unsigned short) (a << 8) >> 12 << 8; // D000 + C00
b += (unsigned short) (a << 4) >> 12 << 4; // DC00 + B0 b += (unsigned short) (a << 0) >> 12 << 0; // DCB0 + A printf("%#X\t", b); printf("========\n"); } void fun2(unsigned short a) { unsigned short b; printf("========\t"); printf("%X\t", (a & 0x000F
) << 12); printf("%X\t", (a & 0x00F0) << 4); printf("%X\t", (a & 0x0F00) >> 4); printf("%X\t", (a & 0xF000) >> 12); printf("========\t"); b = (a & 0x000F) << 12; b += (a & 0x00F0) << 4; b += (a & 0x0F00) >> 4; b += (a & 0xF000) >> 12; printf("%X\t", b); printf("========\n"); } /** * 四位十六進位制反序:ABCD => DCBA */ int main() { // char 0000 0000 // short 0000 0000 0000 0000 unsigned short a = 0XABCD; // scanf("%4X", &a); printf("%X\n", a); fun1(a); fun2(a); }