Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,888 questions

51,815 answers

573 users

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
...