C语言32位数据反序的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言32位数据反序的问题相关的知识,希望对你有一定的参考价值。
例如有一个数据:unsigned int a=0x cf 4a a4 4e;
32位的无符号int类型,如何变换成为0x 4e a4 4a cf
就是8位一组反序过来。在线等。
#include "stdio.h"
void Swap(char *a, char *b)
char tmp = *a;
*a = *b;
*b = tmp;
void main( )
unsigned int x;
char *p;
scanf("%x", &x);
p = (char*)&x;
Swap(&p[0], &p[3]);
Swap(&p[1], &p[2]);
printf("%x\n", x);
参考技术A 可以用 移位和 & | 运算组合,也可以用联合体。
下面用 联合体。 大量数据 大端小端转换,自己写一个函数很方便。
#include <stdio.h>
#include <stdlib.h>
union uu
unsigned int i;
unsigned char c[4];
u;
main()
unsigned int a=0xcf4aa44e;
int i;
unsigned char c;
u.i= a;
c=u.c[0];u.c[0]=u.c[3];u.c[3]=c;
c=u.c[1];u.c[1]=u.c[2];u.c[2]=c;
a = u.i;
printf("%08x",a);
return 0;
本回答被提问者采纳 参考技术B #include<stdio.h>
struct fanxu
unsigned a;
unsigned b;
unsigned c;
unsigned d;
num;
main()
//把2替换成8即可
scanf("%2d%2d%2d%2d",&num.a,&num.b,&num.c,&num.d);
printf("%2d %2d %2d %2d\\n",num.d,num.c,num.b,num.a);
参考技术C 通过左移右移就可以实现,直接上代码
#include <stdio.h>
int main()
unsigned int a=0x12345678,b;
b=(a<<24)+(((a<<16)>>24)<<16)+(((a<<8)>>24)<<8)+(a>>24);
printf("%08x\n",b);
return 0;
编程题:输入任意一个4位数整数,将该数反序输出。求解
c语言
#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[])
int a,s,d,f,g,h,j,k,l;
printf("请输入四位整数");
scanf("%d",&a);
s=a/1000;
d=a%1000;
f=d/100;
g=d%100;
h=g/10;
j=g%10;
k=j/1;
printf("颠倒后的数字为%d%d%d%d",k,h,f,s);
return 0;
参考技术A
c:
#include <stdio.h>#include <stdlib.h>
int main()
int n;
printf("输入一个数:");
scnaf("%d",&n);
printf("反序输出:\\n");
while(n!=0)
printf("%d",n%10);
n/=10;
return 0;
追问
谢谢你,不过你好像理解错了我的意思
参考技术B 参考技术C 1234 4位 = 1*1000+2*100+3*10+4*1方向
4*1000+3*100+2*10+1*1
看出规律来了没?
如果从1234中单独取1, 2 ,3, 4 我就不用说了吧?
这只是一种解法
还可以用字符串去解决
有不懂的在问追问
哦哦,懂了,谢谢
本回答被提问者采纳 参考技术D 什么语言写呢?追问c语言
以上是关于C语言32位数据反序的问题的主要内容,如果未能解决你的问题,请参考以下文章
C语言:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串.