C语言实现字节翻转,把一个字节按位翻转排列解决方案

本文介绍了一个C/C++程序,该程序可以将整数转换为其二进制表示,并提供了字节级的位操作。此外,还实现了一个功能来反转二进制位顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C/C++ code#include

#include

#include

typedef struct

{

unsigned char bit_1 : 1;

unsigned char bit_2 : 1;

unsigned char bit_3 : 1;

unsigned char bit_4 : 1;

unsigned char bit_5 : 1;

unsigned char bit_6 : 1;

unsigned char bit_7 : 1;

unsigned char bit_8 : 1;

}bit;

void Dec2Bin(int *a,char *b,int n=1) //将数据转换为N个字节,默认为1个字节

{

bit *p_bit;

int j;

p_bit=(bit *)a;

for(j=n-1;j>=0;j--)

{

*b++=(p_bit+j)->bit_8;

*b++=(p_bit+j)->bit_7;

*b++=(p_bit+j)->bit_6;

*b++=(p_bit+j)->bit_5;

*b++=(p_bit+j)->bit_4;

*b++=(p_bit+j)->bit_3;

*b++=(p_bit+j)->bit_2;

*b++=(p_bit+j)->bit_1;

}

}

void StrTurn(char *str,int n=1) //将N个字节倒序排列,默认为1个字节

{

char *p,*q;

char temp;

p=str;

q=str+n*8-1;

while(p

{

temp=*p;

*p=*q;

*q=temp;

p++;

q--;

}

}

int main()

{

int a,i,n;

char *b;

while(printf("请输入要转换的数据和字节数:\n"),scanf("%d%d",&a,&n)!=0)

{

b=(char *)malloc(n*8+1);

memset(b,2,n*8+1);

Dec2Bin(&a,b,n);

printf("%d的二进制形式为:\n",a);

for(i=0;b[i]!=2;i++)

printf("%d ",b[i]);

printf("\n\n");

StrTurn(b,n);

printf("翻转后%d的二进制形式为:\n",a);

for(i=0;b[i]!=2;i++)

printf("%d ",b[i]);

printf("\n\n\n");

free(b);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值