精华内容
下载资源
问答
  • Python:将二进制字符串转换为文本文件
    千次阅读
    2020-12-01 08:20:34

    你需要一些识别字符边界的方法。如果将其限制为设置的位长度(如仅8位),则可以填充二进制文件,然后就可以知道字符大小。如果你不想这样做,你需要别的办法。

    这里有一个方法,它不关心处理空格、emojis等的输入。它是通过用空格分隔二进制文件中的字符来实现的:

    test_str = "Dies ist eine binäre Ãbersetzung. ð»"

    Binary = ' '.join(format(ord(i), 'b') for i in test_str)

    print("original:")

    print(test_str)

    print("\nThe string after Binary conversion : \n" + Binary)

    text = "".join(chr(int(s, 2)) for s in Binary.split())

    print(f'\nString after conversion back to text:\n{text}')

    这张照片:

    原件:

    死在一个垃圾桶里。

    二进制转换后的字符串:

    1000100 1101001 1100101 1110011

    100000 1101001 1110011 1110100 100000 1100101 1101001 1101110 1100101

    100000 1100010 1101001 1101110 11100100 1110010 1100101 100000

    1110101 1101110 1100111 101110 100000 11111 01000011011

    转换回文本后的字符串:

    死在一个垃圾桶里。

    注意emoji的最后一个字符以及二进制文件的长度。可能是bear emoji或几个ascii字符。没有分隔符,现在就有办法知道了。

    更多相关内容
  • 二进制文件srcfile 转换成文本文件 targetfile,16进制...二进制文件转换文本文件 targetfile,16进制显示。 二进制文件转换文本文件,16进制显示。 二进制文件转换文本,16进制显示。 二进制转换文本,16进制显示。
  • 二进制文件转换为文本文件的工具

    千次下载 热门讨论 2012-01-12 10:31:53
    一个很有用的工具,可以将二进制文件转换为文本文件
  • 首先要清楚文件里,储存的数据的类型,是int,long,longlong还是float,double 其次文件有无字节序(大小端)问题 ...fopen,二进制读方式,打开文件,fread读取文件,fclose关闭文件 然后转换成十进制ACII格式的数据...

    首先要清楚文件里, 储存的数据的类型,是int,long,long long 还是 float,double
    其次文件有无字节序(大小端)问题
    这两个问题解决了
    直接按照数据类型定义一个定长数据,或者数组一次性读入,或者分批读入全部文件。
    需要的话,读取以后,先转换一下字节顺序
    fopen,二进制读方式,打开文件,fread 读取文件,fclose 关闭文件

    然后 转换成十进制 ACII格式的数据,输出到文本文件中去。
     fopen,文本写方式,打开文件,fprintf 写入文件,fclose 关闭文件。

    基本上就可以了

    具体可以了解一下 fopen,fread,fwrie,fclose , fprintf ,fscanf  
    这些C流式文件读写,打开,关闭函数

    这些都是C标准库的函数,使用的时候 #include <stdio.h> 就可以了


    C++ 可以用C++流 std::fstream ,std::ifstream,std::ofstream 做同样的事情。
    使用的时候
    #include <fstream>

     

    为什么用笔记本打开二进制文件会出现乱码现象?

    What exactly causes binary file “gibberish”?

    问题:

    I haven't found an answer to this particular question; perhaps there isn't one. But I've been wondering for a while about it.

    What exactly causes a binary file to display as "gibberish" when you look at it in a text editor? It's the same thing with encrypted files. Are the binary values of the file trying to be converted into ASCII? Is it possible to convert the view to display raw binary values, i.e. to show the 1s and 0s that make up the file?

    Finally, is there a way to determine what program will properly open a data file? Many times, especially with Windows, a file is orphaned or otherwise not associated w/ a particular program. Opening it in a text editor sometimes tells you where it belongs but most of the time doesn't, due to the gibberish. If the extension doesn't provide any information, how can you determine what program it belongs to?

    回答:

    • Are the binary values of the file trying to be converted into ASCII?

    Yes, that's exactly what's happening. Typically, the binary values of the file also include ASCII control characters that aren't printable, resulting in even more bizarre display in a typical text editor.

    • Is it possible to convert the view to display raw binary values, i.e. to show the 1s and 0s that make up the file?

    It depends on your editor. What you want is a "hex editor", rather than a normal text editor. This will show you the raw contents of the file (typically in hexadecimal rather than binary, since the zeros and ones would take up a lot of space and be harder to read).

    • Finally, is there a way to determine what program will properly open a data file?

    There is a Linux command-line program called "file" that will attempt to analyze the file (typically looking for common header patterns) and tell you what sort of file it is (for example text, or audio, or video, or XML, etc). I'm not sure if there is an equivalent program for Windows. Of course, the output of this program is just a guess, but it can be very useful when you don't know what the format of a file is.

     

    示例代码:读入二进制文件再写到文本中去

    在这个例子中,二进制文本大概长这样:F1 D3 35 C4 35 38 3E ...

    它实质上记录的是float型的数据(float占4个字节,即每4个字节表示一个十进制里的float数据)。每个float数据其实是一个三维坐标点的一个坐标值。在下面的代码中,每次连续读入三个float值从而得到一个坐标点。主要用到函数是:

    istream& read(char* buffer, int count);

    这个函数表示从文件流中读数据,读多少呢?读取count个字节的数据;存到哪呢?存到参数buffer指向的内存位置。注意这个内存位置由一个字符指针表示(上面的第一个参数),在必要的时候需要强制类型转换。一般我们先定义一个变量用于保存,比如在下面代码中该参数为&coordinates[i]。每完成一次读操作,文件读指针就往后移动相应的字节。

     

    代码:

    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main(){
       //把一个数据点的三个坐标放到一个float数组中
       const int num_of_coord = 3;
       float coordinates[num_of_coord]={0.};
       
       const char* InFileName = "data.log";
       const char* OutFileName = "data.txt";
     
       //用构造函数创建文件流对象,以二进制方式读入,以文本方式写出
       ifstream infile(InFileName, ios::binary);
       ofstream outfile(OutFileName);
    
       if(!(infile && outfile)){
          cout<<"open file error"<<endl;
          return -1;
       }
       
       while(!infile.eof()){
          //每次循环读入三个坐标值,每个坐标值对应的二进制数据长度其实就是float的字节数
          for(int i=0; i<num_of_coord; i++){
             infile.read((char*)&coordinates[i], sizeof(float));
             cout<<coordinates[i]<<", ";
          }
          cout<<endl;
    
          for(int i=0; i<num_of_coord; i++)
             outfile<<coordinates[i]<<", ";
          outfile<<endl;  //每输出一个点的三个坐标值,换行一次
       }
    
       infile.close();
       outfile.close();
       return 0;
    }
    

    这里稍微解释一下infile.read((char*)&coordinates[i], sizeof(float));:

    coordinates[i]实际上就是个float类型,&coordinates[i]就是取它的内存地址,换句话说是指向float(4个字节)的类型指针。(char*)&coordinates[i]是加上强制类型转换,将该地址由float*转换为char*,指针类型转换为指向一个字节的字符指针。想想这是为什么?

     

    下面这个链接用一个简单例子说明了c++二进制文件读取和写出的用法

    c.biancheng.net/view/302.html

     

    展开全文
  • 二进制文件转化文本文件

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

    1.区别

    我们说这个文件是二进制文件,这个是文本文件,视角就是从打开这个文件程序在对文件内容的解释上。

    我们使用一般的文本编辑器打开文本文件,看到的是我们认识的字符。

    打开二进制文件,可能根本就打不开。

    (而从计算机本身的存储的视角来看,文本文件和二进制文件都是文件,都是存储在电脑上的都是0101的二进制。只不过文本文件是把字符用某种方式解码成对应的0101这种。)

    如果是文本文件,使用任何一种文本编辑器打开可以展现出人类可读信息字符,因为编码都符合某种编码方式,如ASCII、UTF8、GB2312等等。(关于编码方式不了解可以看这一篇

    如果是二进制文件,肯定没有编码方式,使用某些文本编辑器可以打开,展现出来的就是一些乱七八糟的字符。而是需要特殊的软件进行打开才是正确的打开方式。

    使用UtralEdit可以显示原始的二进制文件,显示的就是原始16进制。右侧自动选了一种编码方式进行翻译成文本,比如他自动选择的就是GBK,显示出来就是乱码。

    下图的例子使用UtralEdit打开的一个png格式的文件(也就是图片,本质上也是一个二进制文件):

    (疑问:为什么utraledit 选择了另外一种编码方式的时候 左边的二进制的值也变了??) 

    有些二进制文件使用通用的规范进行编码,有一定的标准,比如常见的图片格式JPEG,PNG,使用看图软件就能正常打开显示出图片的样子

    有些二进制文件编码格式是程序自定义规范进行编码,对于这种二进制,只有程序的开发者自己知道该文件所对应的编码规范,进行解码使用。

    可执行文件,也是文件,也是二进制文件,而对这种文件的解析就需要操作系统的参与了,涉及到可执行文件的装载等,也是有一个的规范的。可以查看《程序员的自我修养》下的文章)

    2.如何修改二进制文件-Vim

    使用vim修改:

    vim -b 文件名

    :%!xxd ——转化成16进制

    然后进行修改二进制

    :%!xxd -r——转回去

    :wq

    在Linux下使用vim配合xxd查看并编辑二进制文件 - killkill - 博客园

    3.如何把二进制文件转化成其他文本文件,从而搜索ASCII字符

    1.先使用iconv命令://IGNORE忽略那些翻译不了的

    iconv -f GB2312 -t UTF-8//IGNORE {} -o $filename.text

    Linux命令(35)——iconv命令 - 云+社区 - 腾讯云

    2.再使用grep 对 *.text 进行搜索想要查找的ASCII字符

    展开全文
  • 我正在尝试编写一个Python程序,它从LabView获取多个二进制文件,从tkinter对话框中选择并打开,然后将它们转换为可读的文本文件(最好是csv文件)。但是,我在二进制到文本转换上遇到了问题。在我试过看binascii...

    我正在尝试编写一个Python程序,它从LabView获取多个二进制文件,从tkinter对话框中选择并打开,然后将它们转换为可读的文本文件(最好是csv文件)。但是,我在二进制到文本的转换上遇到了问题。在

    我试过看binascii模块。我不清楚你能用这个模块来转换多个页面文件,只有短字符串。在

    所以,现在,我想我应该用utf-8编码打开文件,然后用这种编码读/写它。也许这不是最快或最可靠的路线,但我在这里写了一个简短的代码:from tkinter import Tk, filedialog

    root = Tk();

    files = filedialog.askopenfilenames(parent=root,title='Choose a file')

    print ('The tuple that represents your selected files is ', root.tk.splitlist(files))

    fileslist = list(files)

    print ('The list (mutable) that represents your selected files is ', fileslist)

    for file in fileslist:

    with open(file, encoding="utf-8") as f:

    print (f.read())

    我导入tkinter,得到一个文件对话框,然后将我选择的多个文件的元组转换成一个列表。不过,我注意到,在我的“for file in fileslist”for循环中,该文件是作为字符串读取的。我不确定那是我想要的。无论如何,如果您能帮助解决以下问题,我们将不胜感激:将二进制文件转换为可读文本文件——我知道它们是二进制文件,我不确定具体的字符编码;如果在写字板中打开文件,它的第一个字符是b。在

    帮助创建一个循环,将转换后选定的文件保存在原来的列表中,以便用户可以进行进一步的操作。在

    如果我按原样运行代码,会得到以下错误输出:

    ^{pr2}$

    展开全文
  • 二进制文本互转小工具(含示例)。支持windowsxp、windows7操作系统;支持字节、字、双字转换;支持大小端转换;python编写。
  • 读取文件中的二进制文件并将二进制转换文本文档并输出
  • 前面的话Python内置的base64模块,在这里http://docs.python.org/library/base64.html?highlight=base64#base64,包括b64...但是在用base64.encode编码二进制文件的时候,发现编码不完整,只有部分文件被编码了,b...
  • 二进制文件文本文件转换工具

    热门讨论 2010-04-21 16:03:28
    在论坛想上传文件,不行! 直接粘贴文件内容,不行!可能它是二进制文件。 怎么办,用“二进制文件文本文件转换工具” C#应用示例,含源码。
  • Perl 脚本用于在 HTK 和 HTS 中将二进制模型转换为文本模型 #作者信息 作者:帅江 邮箱: 日期:20141229 #笔记 Perl 脚本还需要额外的文件:config 和 empty.hed(这是空的) bmmf2mmf.pl 类似于 convert.pl ...
  • 然后再将二进制文件还原并存入a3.txt文件。 具体代码如下: #include #include #include #define NSIZE 8 void print_2(int val2); /***********文本文件转二进制**********/ void Text2Bin(const char* sIn,...
  • 二进制文件转换文本文件

    热门讨论 2008-08-29 14:30:27
    这是一段小程序,功能是将二进制文件(*.dat)转换文本文件(或者Excel表格)!
  • //将文件读取流格式 Stream expectedSteam = new FileStream(scriptpath, FileMode.Open, FileAccess.Read); //创建Byte数组 byte[] bl = new byte[expectedSteam.Length]; //读取流文件字节,保存到对象...//二进制
  • 今天,项目现场提出这样一种需求:项目中,将项目文件打成zip包进行发布时,由于安全机制的限制,不允许发布二进制文件,因此需要将.zip格式的二进制文件encode成文本文件,再将文本文件上传后decode成.zip格式。...
  • 如有的话,多谢
  • 最后更改newdirroot新的目录路径,程序运行完以后会生成和原来一样的目录和dat的二进制文件。当读取读大量数据的时候,为了加快读取的速度,需要将文本文件转为二进制文件。python代码如下:#coding:utf-8#! /...
  • 将内容十六进制的文本文件转换二进制内容的bin文件
  • 有一个项目,需要读大量的数据,数据都是txt格式的,读的过程比较慢,为了加快读取的速度,需要将文本文件转为二进制文件。python代码如下;#coding:utf-8#! /bin/pythonimport osimport sysimport os.pathimport ...
  • 打开一个文件文件使用方式含义r只读(文本文件)w只写(文本文件)输出数据,,打开文本文件(建立新文件)a追加(文本文件)rb只读(二进制文件)wb只写(二进制文件) 输出数据,打开二进制文件(建立新文件)ab追加(二进制...
  • ·hexbin 和binhex类似,将十六进制格式文本文件转成二进制文件也很简单: def hexbin(inp, out, extfun=slambda x: x): """ Decode a binhex file inp to binary file outpu. The inp may be a filename or a file...
  • python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes...
  • cifar10图片格式及将二进制文件转换成jpg的python程序
  • 不同的二进制文件需要不同的软件来打开,例如BMP文件,需要一个读图的软件来打开才能看到里面保存的图像,MP3文件需要一个播放器软件才能听到里面的音频。而文本文件只需要记事本就可以打开查看里面的内容。 2 ...
  • 编译工具:TC3 VC6语法:txt2bin 文本文件名 二进制文件名 [/killline|n]/killline 去除回车换行n 以每隔n对16进制字符添加一个回车换行例子:txt2bin file.txt file.bintxt2bin file.txt file.bin /killlinetxt2bin...
  • 文本文件和二进制文件区别Here you will learn about difference between text file and binary file. 在这里,您将了解文本文件和二进制文件之间的区别。 Text Files 文字档案 Text files are special subset ...
  • STL文件文本(asc)和二进制(bin)两种格式。本程序提供了从二进制文本格式的转换。 STL文件文本(asc)和二进制(bin)两种格式。本程序提供了从二进制文本格式的转换
  • 这是我个人用来学习编译原理,练习实现的工具假设我们有一个数据文本文件如下:0x00000001, 0x0000012a, 0x01042018, 0x000406d8,0x7cacb989, 0x00000001, 0x00000001, 0x00014bd0,0x00014c00, 0x00000000, 0x...
  • 文件编码的方式来看,文件可分为ASCII码文件二进制文件两种。ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式:ASC码: 00110101 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,245
精华内容 88,498
关键字:

二进制文件转换为文本

友情链接: 3.zip