当前位置:首页 » 编程语言 » c语言二进制操作

c语言二进制操作

发布时间: 2023-11-22 10:15:38

c语言如何读写二进制

详细:http://hi..com/gibbon_ho/blog/item/9ca853e68447c42bb9382086.html

我一直觉得二进制文件读写是个很容易的事,所以一直没在意,最近在写一个http客户端,实现文件下载的时候,发现总有问题,后来才发现是忘记写文件用二进制方式,惭愧的很啊。然后,就在网上搜索了一下,发现通过C语言实现二进制文件读写的资料居然出奇的少,这让我很愤怒,因为虽然这东西很简单,但是对于初学者,往往会需要花很长的时间去弄,一旦明白,又发现花的时间很不值得,罢了,这里通过一个文件拷贝的例子来讲讲二进制文件的读写吧。先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。下面我们看看一个拷贝程序的源码

Copy.c:#include <stdio.h>

#include <stdlib.h>

#define MAXLEN 1024

int main(int argc, char *argv[])

{

if( argc < 3 )

{

printf("usage: %s %s\n", argv[0], "infile outfile");

exit(1);

}

FILE * outfile, *infile;

outfile = fopen(argv[2], "wb" );

infile = fopen(argv[1], "rb");

unsigned char buf[MAXLEN];

if( outfile == NULL || infile == NULL )

{

printf("%s, %s",argv[1],"not exit\n");

exit(1);

}

int rc;

while( (rc = fread(buf,sizeof(unsigned char), MAXLEN,infile)) != 0 )

{

fwrite( buf, sizeof( unsigned char ), rc, outfile );

}

fclose(infile);

fclose(outfile);

system("PAUSE");

return 0;

}

⑵ C语言中怎么输出数据的二进制

二进制数不能像十进制那样%d直接输出。

如果想输出一个数的二进制可以通过函数把其转成2进制字符串再将其输出。

itoa函数

原型:char*itoa(intvalue,char*string,intradix);

参数:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等

功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。

参考代码:

1、

#include<stdlib.h>
#include<stdio.h>
intmain(void)
{
intnumber=10;
charstring[25];
itoa(number,string,2);
printf("十进制数:%d,二进制数:%s ",number,string);
return0;
}
/*
十进制数:10,二进制数:1010
*/

2、

voidprint_bin(intn)
{
intl=sizeof(n)*8;//总位数。
inti;
if(i==0)
{
printf("0");
return;
}
for(i=l-1;i>=0;i--)//略去高位0.
{
if(n&(1<<i))break;
}

for(;i>=0;i--)
printf("%d",(n&(1<<i))!=0);
}

⑶ c语言的二进制数值如何直接输出

1、首先打开vc6.0, 新建一个项目。

⑷ c语言编程,如何将十进制转化为2进制

c语言编程将十进制转化为2进制可按手工转换规则进行程序转换。

  • 整数占四个字节,每字节8位,共32位。所以,可以定义一个32位的数组来存储转换结果。

  • 循环将整数进行除2取余数,余数存储到数组中。

  • 当整数整除为0时,结束循环

  • 逆序输出数组,得到转换结果

参考代码:

#include<stdio.h>
voidmain()
{
intc[32],i=0,n;
scanf("%d",&n);//输入待转换整数n
do{
c[i++]=n%2;
n/=2;
}while(n!=0);

for(i--;i>=0;i--)
printf("%d",c[i]);
printf(" ");
}

⑸ C语言中进制的表示和转换

C语言中常用的有十进制、二进制、八进制(用0表示)、十六进制(用0x表示)。

十进制转二进制:

十进制转二进制采取除于2取余的方式。

将十进制数除于2得到商和余数,

将商继续除于2一直到商为0,

将得到的余数倒叙排列就是转换为二进制的结果

二进制转十进制:

从右向左用二进制位上的每一个数乘以2的相应次方

如二进制1010转换为十进制:

1010 = 0*(2的0次方)+1*(2的1次方)+0*(2的2次方)+1*(2的3次方) = 2 + 8 = 10

八进制转换为二进制

将二进制数自右向左每三位分为一段(若不足三位用0补齐),

然后将二进制的每三位转换为一位八进制数

如将二进制数0101010转换为八进制:

0 101 010不够三位的补0得到

000 101 010 = 052 = 0052(八进制用0表示)

十六进制转换为二进制

将二进制数自右向左每四位分为一段(若不足三位用0补齐),

然后将二进制的每4位转换为一位十六进制数

如将二进制数0101100转换为十六进制:

010 1100不够三位的补0得到

0010 1100 = 2C= 0x2C(十六进制用0x表示)

⑹ c语言 将用户输入字符串转化2进制并输出

很简单。假定你输入的数字是整型(double型太麻烦)。
第一步:用强制类型转换成int或者long
第二步,这时候有2种方法
①.使用位移操作符“<<”和“>>”,这个就很简单了,
总共要移动的次数 = sizof(int或者long) * 8;
移位的时候做个判断,移出来是‘1’就输出1,否则输出0;
这种方法适合于很大的数字。要注意高位有时候是无意义的0.不用输出
②.根据我们最熟悉的十进制转二进制的原理编程。设强制转换后的数为x;
则循环
do
{
cout << x%2;
x=x/2;
}while(x != 1)
这里不要忘了补一个最后一位
cout<<x;
一个完整的二进制就输出完了,不过顺序是倒着的而已。
这个方法适合于相对小的数字

⑺ C语言的二进制,八进制,十进制是什么意思

计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。

2进制,用两个阿拉伯数字:0、1;

8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;

10进制,用十个阿拉伯数字:0到9;

16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写

一、二进制转换十进制

例:二进制 “1101100”

1101100 ←二进制数

6543210 ←排位方法

例如二进制换算十进制的算法:

1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20

↑ ↑

说明:2代表进制,后面的数是次方(从右往左数,以0开始)

=64+32+0+8+4+0+0

=108

二、二进制换算八进制

例:二进制的“10110111011”

换八进制时,从右到左,三位一组,不够补0,即成了:

010 110 111 011

然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:

010 = 2

110 = 4+2 = 6

111 = 4+2+1 = 7

011 = 2+1 = 3

结果为:2673

热点内容
编译程序总框 发布:2025-01-26 17:52:29 浏览:86
编程叫码农 发布:2025-01-26 17:45:45 浏览:785
bat删除指定文件夹 发布:2025-01-26 17:41:58 浏览:650
哪些汽车品牌配置防爆胎 发布:2025-01-26 17:39:42 浏览:616
怎么更改苹果密码怎么办 发布:2025-01-26 17:15:55 浏览:272
char在c语言中是什么意思 发布:2025-01-26 16:54:13 浏览:68
sqllabview 发布:2025-01-26 16:53:11 浏览:647
如何成为安卓用户 发布:2025-01-26 16:41:23 浏览:966
宋祖儿小学生编程 发布:2025-01-26 16:39:35 浏览:632
杀手3重庆如何得到密码 发布:2025-01-26 16:27:10 浏览:803