标题:把文件的二进制代码保存出来
只看楼主
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
结帖率:77.78%
已结贴  问题点数:20 回复次数:16 
把文件的二进制代码保存出来
文件内容笔记本打开是乱码。。

想要将文件的二进制代码保存到另一个文件。。

保存成这样的:
10110110101011101010100101110101010101010.............


求范例代码
搜索更多相关主题的帖子: 笔记本 二进制 
2014-02-28 23:49
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:20 
啥叫文件的二进制码

DO IT YOURSELF !
2014-03-01 00:03
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
得分:0 
........................................


好吧。。。换个说法,把文件内容已二进制的形式输出。。。。
2014-03-01 09:54
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
得分:0 
2014-03-01 09:58
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
哦  知道了  等我给你研究研究
貌似不咋难

DO IT YOURSELF !
2014-03-01 10:12
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

void dec2yyy(int source,char* bin)
{
    bin[8]='\0';
    int j=7;
    while(source>0)
    {
        bin[j]=source %2+0x30;
        j--;
        source/=2;
    }
    for(;j>=0;j--) bin[j]='0';
} 

int main()
{
    char buf[9]={'\0'};
    FILE* pfile;
    pfile=fopen("121.txt","rb+");
    if(pfile==NULL)
    {
        printf("open file error!\n");
        return 0;
    }
    char ch;
    int  col=0;
    while(1)
    {
        ch=fgetc(pfile);
        dec2yyy(ch & 0xff ,&buf[0]);
        printf(" %8s ",&buf[0]);
        col++;
        if(col==8)
        {
            printf("\n");
            col=0;
        }
        if(ch==EOF) break;
    }
    return 0;
}

/*
效果图例:
E:\ctest\t5\Debug>t5
00101111  00101111  00100000  01110100  00110101  00101110  01100011  01110000
01110000  00100000  00111010  00100000  10110110  10101000  11010010  11100101
10111111  11011000  11010110  11000110  11001100  10101000  11010011  10100110
11010011  11000011  10110011  11001100  11010000  11110010  10110101  11000100
11001000  11101011  10111111  11011010  10110101  11100011  10100001  10100011
00001101  00001010  00101111  00101111  00001101  00001010  00100011  01100100
01100101  01100110  01101001  01101110  01100101  00100000  01011111  01000011
01010010  01010100  01011111  01010011  01000101  01000011  01010101  01010010
01000101  01011111  01001110  01001111  01011111  01010111  01000001  01010010
01001110  01001001  01001110  01000111  01010011  00001101  00001010  00001101
00001010  00001101  00001010  00100011  01101001  01101110  01100011  01101100
01110101  01100100  01100101  00100000  00111100  01110011  01110100  01100100
01101001  01101111  00101110  01101000  00111110  00001101  00001010  00100011
01101001  01101110  01100011  01101100  01110101  01100100  01100101  00100000
00111100  01110011  01110100  01110010  01101001  01101110  01100111  00101110
01101000  00111110  00001101  00001010  00001101  00001010  01101001  01101110
01110100  00100000  01101101  01100001  01101001  01101110  00101000  00101001
00001101  00001010  01111011  00001101  00001010  00001001  01110000  01110010
01101001  01101110  01110100  01100110  00101000  00100010  01101000  01100101
01101100  01101100  01101111  00100000  01110111  01101111  01110010  01101100
01100100  00100001  01011100  01101110  00100010  00101001  00111011  00001101
00001010  00001101  00001010  00001101  00001010  00100000  00100000  00100000
00001101  00001010  00100000  00100000  00100000  00001101  00001010  00001001
01110010  01100101  01110100  01110101  01110010  01101110  00100000  00110000
00111011  00001101  00001010  01111101  11111111
E:\ctest\t5\Debug>
*/

DO IT YOURSELF !
2014-03-01 14:55
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
得分:0 
看不明白什么意思。。。求解释原理。。

source %2+0x30;
dec2yyy(ch & 0xff ,&buf[0]);
这两句。。。第一个后面的+0x30是什么意思?
第二个的ch & 0xff 呢?


还有歌问题。。
我自己写的这个。。查看十六进制的。。
#include"stdio.h"
 

void main(void)
{
    FILE *fp;
    char str[64],str2[128];
    fp=fopen("NOTEPAD.EXE","rb");
    fread(str,sizeof(char),64,fp);
    printf("\n#######%s\n## 十进制有符号##%d\n",str,str);
    printf("\n#######%s\n## 十进制无符号###%i\n",str,str);
    printf("\n#######%s\n## 八进制无符号###%o\n",str,str);
    printf("\n#######%s\n## 十六进制小写###%x\n",str,str);
    getchar();
    sprintf(str2,"%x",str);
    printf("str2的值是:%s",str2);
    getchar();

}



为什么输出转换后的值还原后不和读取的字符内容一样呢?



2014-03-01 22:13
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
得分:0 
重要的是我想要知道原理和算法。。为什么那样做。。

2014-03-01 22:14
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用zuifei07在2014-3-1 22:13:16的发言:

看不明白什么意思。。。求解释原理。。

source %2+0x30;
dec2yyy(ch & 0xff ,&buf[0]);
这两句。。。第一个后面的+0x30是什么意思?
第二个的ch & 0xff 呢?

ch & 0xff 是干什么的呢
答:这个是处理汉字或者全角字符的

source %2+0x30; 是干什么的呢
答:这个是把数值1、0转换成字符1、0


DO IT YOURSELF !
2014-03-01 22:21
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
原理就是把一个文件看成是有N个二进制拼成  然后把每一个二进制转换成1、0组合 然后输出

DO IT YOURSELF !
2014-03-01 22:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-427834-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.140475 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved