在C語(yǔ)言的標(biāo)準(zhǔn)輸出中,有16進(jìn)制,10進(jìn)制和8進(jìn)制的輸出格式,但是沒(méi)有二進(jìn)制的輸出格式。所以要想輸出二進(jìn)制,只能靠自己寫(xiě)函數(shù)進(jìn)行輸出了。
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出北戴河免費(fèi)做網(wǎng)站回饋大家。
基本思想為通過(guò)移位操作+與操作取出各個(gè)位上的值,然后對(duì)其進(jìn)行輸出即可。
以32位無(wú)符號(hào)整型數(shù)據(jù)二進(jìn)制輸出為例,代碼如下:
#include?stdio.h
void?binary_print(unsigned?int?v)
{
int?i;
int?bit;
int?size?=?sizeof(v)*8;
//這里的size是輸入?yún)?shù)v的位數(shù),直接用32代替也可以,但寫(xiě)成sizeof(v)*8這樣更為通用。
for(i?=?0;?i??size;?i?++)
{
bit?=?v(1(size-i-1));//提取出第i位的值
if(bit?==?0)?putchar('0');
else?putchar('1');
}
}
1、二進(jìn)制文本使用fopen函數(shù)的二進(jìn)制模式“rb”就可以打開(kāi)。對(duì)于程序來(lái)說(shuō),不管后綴名如何,文件分為兩種類(lèi)型:文本文件和二進(jìn)制文件。 C語(yǔ)言里有一系列文件操作函數(shù)。區(qū)分文本和二進(jìn)制文件,需要在打開(kāi)文件時(shí)設(shè)置不同的控制符mode的變量即可。
2、fopen的函數(shù)原型:FILE * fopen(const char * path,const char * mode);
fopen函數(shù)的第一個(gè)參數(shù)是文件路徑,第二個(gè)參數(shù)是打開(kāi)方式,有以下幾種方式:
r 以只讀方式打開(kāi)文件,該文件必須存在。
r+ 以可讀寫(xiě)方式打開(kāi)文件,該文件必須存在。
rb+ 讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀數(shù)據(jù)。
rw+ 讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀和寫(xiě)。
w 打開(kāi)只寫(xiě)文件,若文件存在則文件長(zhǎng)度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
w+ 打開(kāi)可讀寫(xiě)文件,若文件存在則文件長(zhǎng)度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
a 以附加的方式打開(kāi)只寫(xiě)文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫(xiě)入的數(shù)據(jù)會(huì)被加到文件尾,即文件原先的內(nèi)容會(huì)被保留。(EOF符保留)
a+ 以附加方式打開(kāi)可讀寫(xiě)的文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫(xiě)入的數(shù)據(jù)會(huì)被加到文件尾后,即文件原先的內(nèi)容會(huì)被保留。 (原來(lái)的EOF符不保留)
wb 只寫(xiě)打開(kāi)或新建一個(gè)二進(jìn)制文件;只允許寫(xiě)數(shù)據(jù)。
wb+ 讀寫(xiě)打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫(xiě)。
wt+ 讀寫(xiě)打開(kāi)或著建立一個(gè)文本文件;允許讀寫(xiě)。
at+ 讀寫(xiě)打開(kāi)一個(gè)文本文件,允許讀或在文本末追加數(shù)據(jù)。
ab+ 讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)。
上述的形態(tài)字符串都可以再加一個(gè)b字符,如rb、w+b或ab+等組合,加入b 字符用來(lái)告訴函數(shù)庫(kù)打開(kāi)的文件為二進(jìn)制文件,而非純文字文件。
3、例程:
#include?stdlib.h
#include?stdio.h
int?main?()
{
FILE?*?fpPhoto,?*?fpText,?*?fpTarget?;
int?????iRead?;
char????szBuf[100]?;
printf?("請(qǐng)輸入第一個(gè)文件名(jpg):\n")?;
gets?(szBuf)?;
fpPhoto?=?fopen?(szBuf,?"rb")?;
printf?("請(qǐng)輸入第二個(gè)文件名(txt):\n")?;
gets?(szBuf)?;
fpText?=?fopen?(szBuf,?"rb")?;
printf?("請(qǐng)輸入目的文件名(jpg):\n")?;
gets?(szBuf)?;
fpTarget?=?fopen?(szBuf,?"wb")?;
if?(!fpPhoto?||?!fpText?||?!fpTarget)
{
printf?("打開(kāi)文件失??!\n")?;
system("pause")?;
return?-1?;
}
while?((iRead?=?fread?(szBuf,?1,?sizeof?(szBuf),?fpPhoto))??0)
fwrite?(szBuf,?1,?iRead,?fpTarget)?;
while?((iRead?=?fread?(szBuf,?1,?sizeof?(szBuf),?fpText))??0)
fwrite?(szBuf,?1,?iRead,?fpTarget)?;
fclose?(fpPhoto)?;
fclose?(fpText)?;
fclose?(fpTarget)?;
return?0?;
}
寫(xiě)入函數(shù)??。。正好有現(xiàn)成的~粘給你了~你自己選吧 二進(jìn)制轉(zhuǎn)十進(jìn)制: // #include stdlib.h //// system("pause"); #includestdio.h #includestring.h #includemath.h //pow() int main() { int i; char str[26]; gets(str); double sum=0.0; long length=strlen(str); for(i=0;ilength;i++) { sum += (str[i]-'0')*pow(2,length-i-1); } printf("%d\n",(long)sum); // system("pause"); return 0; } 十進(jìn)制轉(zhuǎn)n進(jìn)制: #includestdio.h void Fun(int Shi) { if( Shi 2 ) printf("%d",Shi); else { Fun(Shi/2) ; printf("%d",Shi%2); } } int main() { int Shi ; scanf("%d",Shi) ; Fun(Shi) ; printf("\n") ; return 0 ; } 追問(wèn): 哦 對(duì)不起 是 二進(jìn)制文件 寫(xiě)入函數(shù) 不是 二進(jìn)制轉(zhuǎn)換 函數(shù)??!不好意思啊 不過(guò)還是非常感謝你的幫助,,謝謝了??! 回答: fwrite本來(lái)就是支持 二進(jìn)制數(shù) 據(jù)寫(xiě)入,你還需要什么函數(shù)?
1、打開(kāi)visualC++6.0-文件-新建-文件-C++SourceFile。
2、輸入預(yù)處理命令和主函數(shù):
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類(lèi)型:主函數(shù)*/
3、定義變量和數(shù)組的數(shù)據(jù)類(lèi)型并輸入一個(gè)十進(jìn)制:
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類(lèi)型為整型*/
printf("輸入一個(gè)十進(jìn)制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個(gè)十進(jìn)制數(shù)字*/
k=-1;/*將-1賦給k*/
4、用除R取余倒計(jì)法將十進(jìn)制的數(shù)轉(zhuǎn)化成二進(jìn)制的數(shù):
do/*用循環(huán)將十進(jìn)制的數(shù)轉(zhuǎn)化成二進(jìn)制的數(shù)*/
{
r=x%2;/*用除R取余倒計(jì)法計(jì)算二進(jìn)制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
5、輸出結(jié)果:
for(i=k;i=0;i--)? ? ? ? /*將上面倒計(jì)的數(shù)正回來(lái)*/
printf("%d",b[i]);/*輸出結(jié)果*/
printf("\n");
6、完整的源代碼:
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類(lèi)型:主函數(shù)*/
{
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類(lèi)型為整型*/
printf("輸入一個(gè)十進(jìn)制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個(gè)十進(jìn)制數(shù)字*/
k=-1;/*將-1賦給k*/
do/*用循環(huán)將十進(jìn)制的數(shù)轉(zhuǎn)化成二進(jìn)制的數(shù)*/
{
r=x%2;/*用除R取余倒計(jì)法計(jì)算二進(jìn)制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
for(i=k;i=0;i--)? ? ? ? /*將上面倒計(jì)的數(shù)正回來(lái)*/
printf("%d",b[i]);/*輸出結(jié)果*/
printf("\n");
}