當前位置:首頁 » 編程語言 » 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

熱點內容
php項目啟動 發布:2025-01-27 14:21:57 瀏覽:172
私人搭建公網伺服器 發布:2025-01-27 14:11:30 瀏覽:417
存儲卡的作用 發布:2025-01-27 14:11:30 瀏覽:573
編譯宏是什麼意思 發布:2025-01-27 14:07:44 瀏覽:423
withassql嵌套 發布:2025-01-27 13:57:41 瀏覽:940
探歌選哪個配置性價比高些 發布:2025-01-27 13:55:41 瀏覽:706
IR實現編譯器 發布:2025-01-27 13:30:38 瀏覽:460
android圖片過大 發布:2025-01-27 13:30:34 瀏覽:427
公司伺服器怎麼搭建網站 發布:2025-01-27 13:24:43 瀏覽:921
光可以存儲 發布:2025-01-27 13:14:47 瀏覽:677