精华内容
下载资源
问答
  • import numpy as np import cv2 src=cv2.imread("../samples/emma_input.jpg",1) ...src2=np.fromfile("emma.bin",dtype=np.uint8) #从二进制文件恢复图片,注意dtype格式要与src一致 src2=np....
    import numpy as np
    import cv2
    
    
    src=cv2.imread("../samples/emma_input.jpg",1)
    src.tofile("emma.bin") #将jpg图片保存到二进制文件
    
    src2=np.fromfile("emma.bin",dtype=np.uint8) #从二进制文件恢复图片,注意dtype格式要与src一致
    src2=np.reshape(src2,src.shape) #从二进制读取的数据是一维的,需要恢复到原图一致的维度
    
    #这两句非必要,缩放只为了适应屏幕大小
    src=cv2.resize(src,(780,380))   
    src2=cv2.resize(src2,(780,380))
    
    cv2.imshow("src2",src2)
    cv2.imshow("src",src)
    cv2.waitKey(0)

    效果发现从二进制文件恢复的图片与原图一致,说明没有发生转换错误。

    展开全文
  • 二进制文件和十六进制文件读取有什么区别,binary是二进制模式吧,那么十六进制模式用什么模式呢?
  • 二进制文件和非二进制文件

    千次阅读 2012-09-17 14:34:53
    二进制文件和非二进制文件   1. 流式文件:文件中的数据是一串字符,没有结构。 2. 文本文件是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。特别的是,文本文件是指以ASCII码方式(也称文本方式)存储...

    二进制文件和非二进制文件

     

    1. 流式文件:文件中的数据是一串字符,没有结构。

    2. 文本文件是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。特别的是,文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息,因此文本文件不能存储声音、动画、图像、视频等信息。

    设某个文件的内容是下面一行文字: 中华人民共和国 CHINA 1949如果以文本方式存储,机器中存储的是下面的代码(以十六进制表示,机器内部仍以二进制方式存储) D6 D0 BB AA C8 CB C3 F1 B9 B2 BA CD B9 FA 20 43 48 49 4E 41 20 31 39 34 39 A1 A3 其中,D6D0BBAAC8CBC3F1B9B2BACDB9FA分别是中华人民共和国ABCD”七个汉字的机内码,20是空格的ASCII码,4348494E41分别是五个英文字母“CHINA”ASCII码,31393439别是数字字符“1949”ASCII编码,A1A3是标点的机内码。从上面可以看出,文本文件中信息是按单个字符编码存储的,如1949分别存储“1”“9” “4”“9”这四个字符的ASCII编码,如果将1949存储为079D(对应二进制为0000 0111 1001 1101,即十进制1949的等值数),则该文件一定不是文本文件。

    文本文件是包含用户可读信息的文件。这些文件以ASCII码方式存储,可显示和打印。文本文件的行不能包括空字符(即码中的NULL),行的最大长度(包括换行符在内)也不能超过(LINE_MAX)所定义的字节数。不过文本文件中并不限制使用除空字符以外的控制字符或其它不可打印字符。(二进制文件[此处指非文本文件]包含计算机可读信息的文件。二进制文件可以是可执行的文件,使系统根据其中的指令完成某项工作。命令和程序都是以可执行的而进制文件方式存储。二进制文件没有行的长度限制,也可包含空字符。)

    3. 如果将存储的信息采用字符串方式来保存,那么称此类文件为文本文件(可以按字符显示)。将文件看作是由一个一个字节(byte)组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。

    如果将存储的信息严格按其在内存中的存储形式来保存,则称此类文件为二进制文件。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作流式文件。文本或字符文件代表慢速设备,而二进制文件代表可以大块数据操作的快速外设,二进制文件内容基本无意义,系统对它不加解释地传给调用者,解释由调用者负责.而对字符文件,系统把他理解为单字节的ASCII或多字节的UNICODE字符串,并且对其中的特殊字符(如回车等)加以特殊处理.所以同一个文件,可以使用不同类型的系统调用.

    回车(CR)和换行(LF)符都是用来表示“下一行”的。而标准没有规定要使用哪一个。于是产生了三种不同的用法:

    (1) Doswindows采用回车+换行(CR+LF)表示下一行

    (2) UNIX采用换行符(LF)表示下一行

    (3) MAC机采用回车符(CR)表示下一行。

    当在不同的系统间传递文件,就要涉及格式的转换。

    文本方式和二进制方式的最大区别在于文本方式对于'\n'换行符的理解不同

    (1)DOS平台下,该字符会被展开成<CR>< LF>两个控制字符(相当于"\r\n"),在ASCII字符集下是 0DH,0AH

    (2)UNIX平台下,仅仅是<LF>,不会展开。

    (3)在二进制方式下,不管是什么平台,'\n'都是精确的<LF>

    linux/unix 系统上,只有一种文件类型的系统,带b字母的模式和对应的不带b字母的模式是相同的。

    关于EOF   EOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件. EOFWindows下是ctrl+zlinux下是ctrl+D.

    第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢? 其实不管是二进制文件也好,还是文本文件也好,都是一连串的01,但是打开方式不同,对于这些01的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate

    最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

    4. 输入码、区位码、国标码与机内码 (都是汉字的编码形式)

    键盘是当前微机的主要输入设备, 输入码就是使用英文键盘输入汉字时的编码。

    计算机只识别由01组成的代码,ASCII码是英文信息处理的标准编码,汉字信息处理也必须有一个统一的标准编码。我国国家标准局于19815月颁布了《信息交换用汉字编码字符集——基本集》,代号为GB2312-80,共对6763个汉字和682个图形字符进行了编码,其编码原则为:汉字用两个字节表示,每个字节用七位码(高位为0,国家标准将汉字和图形符号排列在一个9494列的二维代码表中,;每两个字节分别用两位十进制编码,前字节的编码称为区码,后字节的编码称为位码,此即区位码,如字在二维代码表中处于17区第3位,区位码即为“1703 ”

    国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,这样就得了一个与国标码有一个相对位置差的代码,再将这个代码的第一个字节和第二个字节分别加上20H,就得到国标码。如:字的国标码为3123H,它是经过下面的转换得到的:1703D>1103H->+20H>3123H

    国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如字,国标码为31H23H,而西文字符“1” “#”SCII也为31H23H,现假如内存中有两个字节为31H23H,这到底是一个汉字,还是两个西文字符“1”;“#”?于是就出现了二义性,显然,国标码是不可能在计算机内部直接采用的,于是,;汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由01,其余7位不变,如:由上面我们知道,字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位110110001B10100011B即为B1A3H,因此,保字的机内码就是B1A3H;

    汉字信息处理过程众所周知,计算机并不能识别汉字,因此必须要把每个字符转换成计算机能唯一识别的由01组成的代码,这个代码称为机内码

    汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII码冲突的问题。

    5. 测试

    FILE *fp;

                    int i = 12;

                    int j = 12;

                   

                    fp = fopen("01.txt","wb");

                    fprintf(fp,"%d",i);

                    fputc('\n',fp);

                    fwrite(&j,sizeof(int),1,fp);

                   

                    fclose(fp);

    即使是用二进制打开,但如果你用fputc,fputsfprintf这些函数,其实还是和用文本文件打开一样。只有用到fwrite/fread函数,才会看到一个整型占4个字节。

    按二进制写文件指的是直接按照数据在内存中的表现形式写入文件。例如,如果int型数据在内存中用 4 个字节表示,则写这个int数据的时候直接把对应的内存中 4 个字节的内容写入文件。在此过程中数据不需要做任何转换,所以效率较高。

    据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于字符型数据,由于其本身就是ASCII码字符,一般不必转换,直接写入文件。但是,由于不同的系统对于换行符('\n')有不同的处理(转换)方式,在有的系统(如Windows)下也会对 '\ n'作适当的转换。

    对于非字符型数据,都要进行转换处理。例如:int m = 12; 以及 double f = 2.3;,分别按照 "%d""%lf"方式将 m f 写入文件的时候,写入的分别是 '1''2'两个字符以及 '2''.' '3'等三个字符的ASCII码值。显然,如果按照二进制方式写的话,在文件中一般 m要占 4个字节、f 要占 8 个字节

     

     

    转载地址  http://liufabin66688.blog.163.com/blog/static/1396854820081027103133373/


    展开全文
  • 初识二进制文件

    2020-03-25 19:01:17
    计算机文件 一般分为两类:二进制文件 和 ASCII文件(也称纯文本文件)。 ASCII文件:用纯文本编辑器能够打开且打开文件的内容是人类能够理解的可显示字符。 二进制文件:狭义的说,除去纯文本文件以外的文件均为...

    ELF a linux excutable walkthrough

    计算机文件 一般分为两类:二进制文件ASCII文件(也称纯文本文件)

    • ASCII文件:用纯文本编辑器能够打开且打开文件的内容是人类能够理解的可显示字符。
    • 二进制文件:狭义的说,除去纯文本文件以外的文件均为二进制文件,它们的存储形式为二进制。

    二进制文件的一些描述

    二进制文件在不同操作系统上的表现形式不一样。通过基于 unix 操作系统的 file 命令可以获得二进制文件的相关描述,如:

    setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 2.6.24, BuildID[sha1]=c5ecc1690866b3bb085d59e87aad26a1e386aaeb, not stripped
    

    下面我们来分析下这段输出到底描述了些什么。

    ELF (Excutable and Linkable Format)

    **可执行与可链接格式(ELF)**在计算机科学中是一种用于可执行文件、目标文件、共享库和核心转储的标准文件格式。1999年,被86open项目选为x86架构上的类Unix操作系统的二进制文件格式标准,用来取代COFF。因其可扩展性与灵活性,也可应用在其它处理器、计算机系统架构的操作系统上。

    具体参考:Excutable and Linkable Format

    其它文件格式:

    • PE (Portable Excutable) —— 针对 Windows 操作系统
    • Mach-O(Mach object) —— 针对 NeXTSTEP、 OS X 和 iOS

    32-bit

    不同操作系统写入二进制文件的方式,与操作系统的汇编指令集有关。这里的 32-bit 不是代表编译该文件的操作系统就是32位操作系统,两者之间没有关联。不同的操作系统可以使用不同的汇编指令集编译出具有相同功能的程序。

    常见的汇编指令集有MIPS32(32-bit)、MIPS64、ARM、PowerPC、x86(32-bit)和x86-64(64-bit)等,最后两个汇编指令集是比较常见的。

    LSB (Linux Stardard Base)

    LSBLinux标准规范的英文缩写

    Intel 80386

    Intel 80386是Intel的32位微处理器。这意味着该可执行文件可以在Intel的80386微处理器或与其兼容的任何设备上运行。最新的64位微处理器都向后兼容32位微处理器。

    SYSV

    SYSV 指的就是 UNIX System V。UNIX System V是Unix操作系统众多版本中的一支。它最初由AT&T开发,在1983年第一次发布,因此也被称为AT&T System V。一共发行了4个System V的主要版本:版本1、2、3和4。Unix的另一个主要版本是BSD(伯克利软件发行版)。

    其它:

    • GNU/Linux —— Linux 操作系统

    Dynamically linked (uses shared libs)

    在动态链接中,将外部库(共享库)的名称放置在最终的可执行文件中,而实际链接是在运行时才将可执行文件和库都放置在内存中时执行的。因此,我们不必将标准库保留在二进制文件中(您可以将它们导入程序中)。这有助于减小文件大小,并允许多个程序使用可执行模块的单个副本。

    其它:

    • Static linking

    Static linking (静态链接) 中,程序中使用的所有库模块均被复制到最终的可执行文件中。这是由链接器执行的,并且是编译过程的最后一步。这会大大增加文件大小。

    但是,使用静态链接库的程序通常比使用共享库的程序快。同样在静态链接程序中,所有代码都包含在一个可执行模块中。因此,它们几乎不会遇到兼容性问题。

    interpreter /lib/ld-

    这是 ELF(可执行与可链接格式) 解释器。它负责动态链接。

    for GNU/Linux 2.6.24

    与程序目标链接 C 库的 Linux 系统内核版本。

    not stripped

    not stripped 直译就是 没有剥离 的意思。此信息表示可执行程序和原始源代码之间存在关系。它包括诸如全局和静态变量名称以及函数名称之类的内容。

    相反,stripped 代表没有这些调试信息。


    好了~ 上面就是关于使用 file 命令查出的一些关于二进制文件的描述。这对我们入门 CTF 也有一定的帮助。

    Reference

    参考资料 Knowing your Binary!

    展开全文
  • [C语言] 文件操作,合并两个二进制文件为单独一个二进制文件; #define BUFFER_SIZE 1024//合并文件mergeFile (infile1, infile2, filenmae) void mergeFile(FILE *fp1,FILE *fp2,char *name){ FILE *...

    [C语言] 文件操作,合并两个二进制文件为单独一个二进制文件;

    复制代码
    #define BUFFER_SIZE 1024

    //
    合并文件mergeFile (infile1, infile2, filenmae) void mergeFile(FILE *fp1,FILE *fp2,char *name){ FILE *fd1,*fd2,*fp3; unsigned char buf[BUFFER_SIZE]; char filename[100]; strncpy(filename,name,sizeof(filename)); int rc1,rc2; fd1 = fopen(fp1,"rb"); fd2 = fopen(fp2,"rb"); fp3 = fopen(filename, "wb" ); while( (rc1 = fread(buf,sizeof(unsigned char), BUFFER_SIZE,fd1)) != 0 ) { fwrite( buf, sizeof( unsigned char ), rc1, fp3 ); } while( (rc2 = fread(buf,sizeof(unsigned char), BUFFER_SIZE,fd2)) != 0 ) { fwrite( buf, sizeof( unsigned char ), rc2, fp3 ); } sleep(0.1); fclose(fd1); fclose(fd2); fclose(fp3); }
    展开全文
  • 二进制文件文本文件和二进制数据

    千次阅读 2015-05-27 17:48:45
    二进制文件二进制数据文本文件个人简单理解
  • 二进制文件转化成文本文件

    万次阅读 2019-06-20 11:13:46
    文本文件和二进制文件的区别在于打开这个文件的程序在对文件内容的解释上。 如果是文本文件,使用任何一种文本编辑器打开可以展现出人类可读信息字符,编码都符合某种编码方式,如ASCII、UTF8、GB2312等 如果是...
  • 二进制文件、文本文件

    万次阅读 多人点赞 2018-08-11 14:19:21
    在windows上,用记事本就可以打开文本文件了,但要打开二进制文件需要对应的二进制文件解码器,因此,文本文件是更为大家所熟知的文件形式,而二进制文件的优点在于它的输入输出都省去了转换的过程,而且更省空间。...
  • 今天,项目现场提出这样一种需求:项目中,将项目文件打成zip包进行发布时,由于安全机制的限制,不允许发布二进制文件,因此需要将.zip格式的二进制文件encode成文本文件,再将文本文件上传后decode成.zip格式。...
  • 文本文件和二进制文件的差异和区别

    万次阅读 多人点赞 2018-05-16 11:11:20
    广义上的二进制文件包括文本文件,这里讨论的是狭义上的二进制文件与文本文件的比较: 能存储的数据类型不同 文本文件只能存储char型字符变量。二进制文件可以存储char/int/short/long/float/……各种变量值。 每...
  • C/C++读写文本文件、二进制文件

    万次阅读 多人点赞 2017-12-13 10:44:11
    C语言文本文件读写方式;C语言二进制文件读写方式;CPP文本文件读写方式;CPP二进制文件读写方式;
  • python处理二进制文件(.bin)

    万次阅读 多人点赞 2019-02-11 16:30:33
    最近遇到了python处理二进制文件的一些问题,简单地罗列一下。 什么是二进制文件 扩展名为.bin的文件就是一个二进制文件,可以直接用一个叫winhex的软件打开 二进制文件读写 bytes类型转化 这里写自定义目录...
  • java中关于二进制文件的读写[二进制文件读写]
  • 使用Python读取二进制文件

    万次阅读 多人点赞 2018-03-13 09:00:25
    目标:目标文件为一个float32型存储的二进制文件,按列优先方式存储。本文使用Python读取该二进制文件并使用matplotlib.pyplot相关工具画出图像 工具:Python3, matplotlib,os,struct,numpy 1. 读取二进制文件...
  • 文本文件和二进制文件的判别

    千次阅读 2019-06-26 15:17:03
    作为程序员,从第一次接触编程开始,就知道了文件的两大类别:文本文件和二进制文件。但是,如何定义和判别这两类文件,在我的知识体系了,却一直是模糊的。直觉上,用文本方式读写的文件一定是文本文件,用二进制...
  • 二进制文件和 ASCII

    2019-03-20 09:59:44
    计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件) 文本文件是可以看到的字符,二进制文件是不可视字符,如图片. 二进制文件: 包含在ASCII及扩展 ASCII字符中编写的数据或程序指令的文件。计算机文件...
  • Java Android 二进制文件读写

    千次阅读 2019-03-08 16:53:28
    Java Android 二进制文件读写 Java Android 二进制文件读写 1.读取android工程中本地二进制文件 Android studio工程目录中有二进制文件abcd.raw 。 二进制文件所放目录 app/src/main/assets/abcd.raw 1.1一次性读取...
  • 这是C的代码 //写入二进制文件 FILE *f=fopen("F:\\g.txt","wb+"); double d=123456123.1231231131; fwrite(&d,sizeof(double),1,f); fclose(f); //从二进制文件读出 FILE *fop=fopen("F:\\g.txt","rb"); dou
  • 使用vscode查看二进制文件

    万次阅读 2020-03-20 20:45:45
    最近发现vscode下的hexdump插件可以查看二进制文件 效果如下:
  • 详解文本文件和二进制文件区别

    千次阅读 多人点赞 2019-06-12 15:49:01
    网上关于文本文件与二进制文件的文章很多,但遗憾的是,这些文章讲得都比较散。下面我将结合所查到的资料,从多个角度谈谈文本文件与二进制文件。 一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理...
  • Python二进制文件的读取与写入

    万次阅读 2019-06-20 19:12:59
    Python二进制文件的读取与写入 当读取音视频、图片等二进制文件时,需要采用二进制的读取方法。 一、读取 with open(file,mode) as f: pass file:文件路径 mode:rb 读取二进制文件 strb = f.read() 功能:一次性读取...
  • 本工具类主要用来将二进制文件读取并转换成十六进制字符串,并提供了将十六进制字符串还原为二进制文件的方法。 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; ...
  • C++文件操作: 转载自:C++文件操作详解 文本文件和二进制文件 ...注:文本文件与二进制文件的不同体现在编码方式上,文本文件基于字符编码,定长,二进制文件基于值编码,不定长。windows系统下使用...
  • /****************************************************二进制文件文件转换为16进制文件****************************************************/#include<stdio.h>#defineDATA_MAX3000000unsignedchardata[.....
  • 文本文件和二进制文件区别:文本文件是可见字符的文件,它可以直接经ASCII转换成可见字符二进制文件是不可见字符的文件,比如txt文件但是无论是二进制文件还是文本文件,他们的存储总是二进制...
  • 二进制文件 二进制文件,是无格式有数据类型的。比如 10 11 12 三个数。但二进制文件没有行的概念。我们要紧凑地储存他们。二进制整数存储范围为 0-255. 使用二进制文件的好处 为什么要使用二进制文件。原因大概有三...
  • 基础知识 | 什么是二进制文件

    万次阅读 多人点赞 2019-04-07 09:58:42
    自从踉跄尝试开发,不停地被提醒自己基本功的薄弱——人家随随便便抛出一句“这本来就是二进制文件(无法解码很正常)”,我却纳闷了半天到底什么是二进制文件。没办法,基础差就要好好学习。 来吧,今日关键词:...
  • 文本文件与二进制文件区别

    千次阅读 2019-06-08 08:57:53
    一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的...
  • C语言读写二进制文件

    千次阅读 2017-07-20 14:35:04
    可以这么说,除了文本文件以外的所有文件都是二进制文件二进制文件相对于文本文件更容易修改。因为文本文件的修改,需要修改以后写入内存,然后再清空原文件,再从内存中读取出修改以后的内容到本文件中。二进制...
  • python 将文本文件转换成二进制文件 C++进行读取

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,585
精华内容 41,834
关键字:

二进制文件