How to convert a 16-bit number between big-endian and little-endian values in C

2 Answers

0 votes
#include <stdio.h>
#include <stdlib.h>

void print_bits(unsigned short n, unsigned short size) {
    for (int i = 1 << (size - 1); i > 0; i = i / 2) {
        (n & i) ? printf("1") : printf("0");
    }

    printf("\n");
}

int main(void)
{
    // 16 bit 

    // unsigned short _byteswap_ushort(unsigned short value); // VS

    unsigned short n = 61696;

    print_bits(n, 16);

    n = _byteswap_ushort(n);

    print_bits(n, 16);
}


/*

1111000100000000
0000000011110001

*/

 



answered Jan 2, 2025 by avibootz
edited Jan 3, 2025 by avibootz
0 votes
#include <stdio.h>
 
void print_bits(unsigned short n, unsigned short size) {
    for (int i = 1 << (size - 1); i > 0; i = i / 2) {
        (n & i) ? printf("1") : printf("0");
    }
 
    printf("\n");
}
 
int main(void)
{
    // 16 bit 
 
    unsigned short n = 61696;
 
    print_bits(n, 16);
 
    n = (n << 8) | (n >> 8);
 
    print_bits(n, 16);
}
 
 
/*
 
1111000100000000
0000000011110001
 
*/

 



answered Jan 2, 2025 by avibootz
edited Jan 3, 2025 by avibootz
...