二进制文件和文本文件的详细以及如何生成二进制文件
- 格式:docx
- 大小:25.21 KB
- 文档页数:5
python对文本文件和二进制文件操作的三个通用步骤Python对文本文件和二进制文件的操作涉及三个通用步骤:打开文件、读写文件内容以及关闭文件。
1. 打开文件:在Python中,可以使用`open()`函数来打开一个文件。
这个函数接受文件路径和打开模式作为参数,并返回一个文件对象。
文件路径可以是绝对路径或相对路径。
打开模式分为读取模式('r')、写入模式('w')、追加模式('a')以及二进制模式('b')等。
例如,要打开一个文本文件用于读取,我们可以使用以下代码:```pythonfile = open('example.txt', 'r')```2. 读写文件内容:一旦文件打开,我们可以使用文件对象的方法来读取文件内容或写入新的内容。
对于文本文件,可以使用`read()`、`readline()`和`readlines()`方法来读取文件内容,或使用`write()`方法来写入新的内容。
- `read()`方法将整个文件内容读取到一个字符串中。
- `readline()`方法每次读取文件的一行,并返回一个字符串。
- `readlines()`方法将文件的每一行读取到一个列表中,每一行作为一个元素。
- `write()`方法将给定的字符串写入文件中。
对于二进制文件,可以使用`read()`和`write()`方法来读取和写入二进制数据。
```python# 读取文件内容content = file.read()print(content)# 写入新的内容file.write('This is a new line.')```3. 关闭文件:在完成文件操作后,应该及时关闭文件,以释放系统资源。
可以使用文件对象的`close()`方法来关闭文件。
```pythonfile.close()```为了避免忘记关闭文件,可以使用`with`语句来自动关闭文件。
文件的二进制1. 引言在计算机科学中,文件是存储信息的一种重要方式。
无论是文本文件、图像文件还是视频文件,它们都以二进制形式存储在计算机硬盘上。
本文将深入探讨文件的二进制表示形式、二进制转换以及与二进制相关的一些常见概念。
2. 文件的二进制表示计算机中所有数据都以二进制形式存储和处理。
而文件作为数据的一种形式,也不例外。
在计算机内部,每个文件都由一系列字节组成。
每个字节由8个比特(bit)组成,每个比特可以表示0或1。
例如,对于一个文本文件,其中包含”Hello, World!“这句话。
在计算机中,该句话被转换为ASCII码,并以二进制形式存储。
具体来说,ASCII码中的每个字符都有一个对应的7位或8位二进制数值。
因此,”Hello, World!“可以用以下二进制表示:01001000 01100101 01101100 01101100 01101111 00101100 00100000 01010111 0110111101110010 01101100 01100100 00100001这样,通过将每个字符转换为对应的ASCII码,并将其转换为二进制形式,我们可以得到文件的二进制表示。
3. 二进制转换在计算机中,将其他进制转换为二进制或将二进制转换为其他进制是非常常见的操作。
以下是几种常见的二进制转换方法:3.1 十进制转二进制十进制数转换为二进制数时,可以使用除2取余法。
具体步骤如下:1.将十进制数除以2,记录下商和余数。
2.将上一步得到的商再次除以2,继续记录商和余数。
3.重复上述步骤,直到商为0为止。
4.将最后一次得到的余数作为最低位(LSB),依次排列之前得到的余数,即可得到对应的二进制数。
例如,将十进制数27转换为二进制:27 ÷ 2 = 13 (1)13 ÷ 2 = 6 (1)6 ÷ 2 = 3 03 ÷ 2 = 1 (1)1 ÷ 2 = 0 (1)因此,27的二进制表示为11011。
[C++]c++中⼆进制⽂件的创建与使⽤⼆进制⽂件和⽂本⽂件是不同的⽂件类型,因此在创建等⽅式也是不⼀样的使⽤⽂件⽅式见下表:"r"(只读)为输⼊打开⼀个⽂本⽂件"w"(只写)为输出打开⼀个⽂本⽂件"a"(追加)为追加打开⼀个⽂本⽂件"rb"(只读)为输⼊打开⼀个⼆进制⽂件"wb"(只写)为输出打开⼀个⼆进制⽂件"ab"(追加)为追加打开⼀个⼆进制⽂件"r+"(读写)为读/写打开⼀个⽂本⽂件"w+"(读写)为读/写创建⼀个⽂本⽂件"a+"(读写)为读/写打开⼀个⽂本⽂件"rb+"(读写)为读/写打开⼀个⼆进制⽂件"wb+"(读写)为读/写创建⼀个⼆进制⽂件"ab+"(读写)为读/写打开⼀个⼆进制⽂件void generateBin(string filename, int npattern ,int ninput, int noutput){FILE* file;file = fopen(filename.c_str(), "w");if (file == NULL){throw runtime_error("network: could not open " + string(filename) + " for writing");}fwrite(&npattern, sizeof(int), 1, file);fwrite(&ninput, sizeof(int), 1, file);fwrite(&noutput, sizeof(int), 1, file);float * input = new float[ninput];float * output = new float[noutput];float range = 1;for (int n = 0; n < npattern;n++){for (int i = 0; i < ninput; i++){input[i] = range * ((float)rand() / RAND_MAX - 0.5);}fwrite(input,sizeof(float),ninput,file);for (int o = 0; o < noutput; o++){output[o] = range * ((float)rand() / RAND_MAX - 0.5);}fwrite(output, sizeof(float), noutput, file);}if (fclose(file) != 0) {throw runtime_error("network: error on saving to " + string(filename));}delete input;delete output;}void readdata(){int ninput =0;int noutput = 0;int npatterns = 0;size_t data_read = 0;float* inputs = new float[ninput];float* targets = new float[noutput];string filename = "data.bin";FILE *file = fopen(filename.c_str(), "r");throw runtime_error("Cannot open file " + filename + " for reading");int ok =fread(&npatterns, sizeof(int), 1, file) &&fread(&ninput, sizeof(int), 1, file) &&fread(&noutput, sizeof(int), 1, file);cout << npatterns << " " << ninput << " " << noutput << endl;cout << "ninput is:" << ninput << endl;cout << "noutput is:" << noutput << endl;cout << "npatterns is:" << npatterns << endl;for (int i = 0; i < npatterns; i++) {cout << "load_patterns i:" << i << endl;data_read = fread(inputs, sizeof(float), ninput, file);cout << "need: " << ninput << " get: " << data_read << endl;if (data_read != ((size_t)ninput)) {cout << "Wrong file format " << endl;fclose(file);throw runtime_error("Wrong file format");}data_read = fread(targets, sizeof(float), noutput, file);if (data_read != ((size_t)noutput)) {cout << "Wrong file format " << endl;fclose(file);throw runtime_error("Wrong file format");}cout << "load_patterns i:" << i << endl;}delete inputs;delete targets;fclose(file);} 上⾯两段程序,试图创建⼀个⼆进制⽂件,并且向其中写⼊data,并且再在其中读出⼆进制数据。
二进制文件和文本文件的详细以及如何生成二进制文件?技术随笔2010-05-01 19:13:56 阅读226 评论0 字号:大中小订阅这个问题一直困扰了很多年,可能是我没有认真的去思考。
我相信很多人可能和我一样很纠葛,到底编译器也好,汇编器也好是如何工作的呢?到底怎么回事?为什么会运行呢?这是让我们这些看着windows 学习电脑的人真的很难去理解计算机的内部结构。
其实,这一切都只是障眼法,下面我就来给大家细细说说我对计算机的理解。
解答1:编译器是怎么回事?所谓编译器,顾名思义就是将一种文本格式转换成另一种文本格式。
比如将字符串echo "hello"; 转换成printf("hello"); 这其实是php语言转成c语言的一种表示。
这只是一种简单的描述,其实很大一部分的编译器是将源语言转换成了汇编语言。
下面我们来看看 C 语言中的经典hello word,通过gcc编译后生成的汇编是怎么回事。
c语言源码:#include<stdio.h>int main() {printf("hello world\n");}通过编译器后,编译器把这个翻译成了另一套字符串,其实就是汇编语言:.file "hello.c".section .rodata.LC0:.string "hello world".text.globl main.type main, @functionmain:leal 4(%esp), %ecxandl $-16,%esppushl -4(%ecx)pushl %ebpmovl %esp, %ebppushl %ecxsubl $4, %espmovl $.LC0, (%esp)call putsaddl $4, %esppopl %ecxpopl %ebpleal -4(%ecx), %espret.size main, .-main.ident "GCC: (GNU) 4.1.2".section .note.GNU-stack,"", @progbits这就是编译器做的工作了,其实这应该可以理解是吗,其实就是从一种字符串模式到了另一种字符串模式。
linux中各种文件类型普通文件(- regular file)(1)文本文件。
文件中的内容是由文本构成的,文本指的是ASCII码字符。
文件里的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机中本身就只有1和0),而文本文件中的数字本身应该被理解为这个数字对应的ASCII码。
常见的.c 文件, .h文件 .txt文件等都是文本文件。
文本文件的好处就是可以被人轻松读懂和编写。
所以说文本文件天生就是为人类发明的。
(2)二进制文件。
二进制文件中存储的本质上也是数字,只不过这些数字并不是文字的编码数字,而是就是真正的数字。
常见的可执行程序文件(gcc编译生成的a.out,arm-linux-gcc编译连接生成的.bin)都是二进制文件。
(3)对比:从本质上来看(就是刨除文件属性和内容的理解)文本文件和二进制文件并没有任何区别。
都是一个文件里面存放了数字。
区别是理解方式不同,如果把这些数字就当作数字处理则就是二进制文件,如果把这些数字按照某种编码格式去解码成文本字符,则就是文本文件。
(4)我们如何知道一个文件是文件文件还是二进制文件?在linux系统层面是不区分这两个的(譬如之前学过的open、read、write等方法操作文件文件和二进制文件时一点区别都没有),所以我们无法从文件本身准确知道文件属于哪种,我们只能本来就知道这个文件的类型然后用这种类型的用法去用他。
有时候会用一些后缀名来人为的标记文件的类型。
(5)使用文本文件时,常规用法就是用文本文件编辑器去打开它、编辑它。
常见的文本文件编辑器如vim、gedit、notepad++、SourceInsight等,我们用这些文本文件编辑器去打开文件的时候,编辑器会read读出文件二进制数字内容,然后按照编码格式去解码将其还原成文字展现给我们。
如果用文本文件编辑器去打开一个二进制文件会如何?这时候编辑器就以为这个二进制文件还是文本文件然后试图去将其解码成文字,但是解码过程很多数字并不对应有意义的文字所以成了乱码。
编程语言中的文件类型详解在编程中,文件类型是指文件的格式和结构,决定了文件的内容和如何处理。
不同的编程语言支持不同的文件类型,每种文件类型都有其特定的用途和功能。
本文将详细介绍几种常见的文件类型,以帮助读者更好地理解编程语言中的文件处理。
1. 文本文件(Text Files)文本文件是最常见的文件类型之一,它包含了以文本形式存储的字符数据。
文本文件通常以ASCII或Unicode编码存储,可以使用任何文本编辑器打开和编辑。
常见的文本文件扩展名包括.txt、.csv、.html等。
在编程中,文本文件常用于存储和处理结构化的数据。
例如,CSV(逗号分隔值)文件常用于存储表格数据,HTML文件用于网页的展示和布局。
通过读取和写入文本文件,程序可以从中提取信息、进行数据分析和生成报告。
2. 二进制文件(Binary Files)与文本文件不同,二进制文件包含了以二进制形式存储的数据。
这些文件不以可读的字符形式表示,而是以字节序列表示。
二进制文件可以包含任意类型的数据,如图像、音频、视频等。
常见的二进制文件扩展名包括.jpg、.mp3、.mp4等。
在编程中,处理二进制文件需要使用特定的库或工具。
例如,图像处理程序可以读取二进制图像文件,并对其进行编辑、调整和保存。
音频和视频处理程序可以解析二进制文件中的音频和视频数据,并进行播放或转码。
3. 可执行文件(Executable Files)可执行文件是一种特殊的二进制文件,它包含了计算机程序的机器语言代码。
这些文件可以直接在计算机上运行,执行特定的任务或操作。
不同的操作系统支持不同的可执行文件格式,如Windows上的.exe、Linux上的.out等。
编程语言中的编译器或解释器可以将源代码转换为可执行文件。
通过编译和链接过程,源代码被转换为机器语言指令,形成可执行文件。
这些文件可以在计算机上独立运行,无需编程语言的运行环境。
4. 数据库文件(Database Files)数据库文件是一种用于存储和组织数据的文件类型。
C#的⼆进制⽂件操作及汉字编码转换1.数值应保存在⼆进制⽂件⾸先列举⽂本、⼆进制⽂件的操作(读写)⽅法:⽅式1:1//⽂本⽂件操作:创建/读取/拷贝/删除2using System;3using System.IO;4class Test5 {6string path = @"f:/t.txt";7public static void Main()8 {9//创建并写⼊(将覆盖已有⽂件)10if (!File.Exists(path))11 {12//StreamWriter m=new13//StreamWriter(path,true,Encoding.Default,1);//ASCII,1 Encoding.Default:即//UTF-8编码这样就可以指定编码⽅式14using (StreamWriter sw = File.CreateText(path))15 {16 sw.WriteLine("Hello");17 }18 }19//读取⽂件20using (StreamReader sr = File.OpenText(path))21 {22string s = "";23while ((s = sr.ReadLine()) != null)24 {25 Console.WriteLine(s);26 }27 }28//删除/拷贝29try30 {31 File.Delete(path);32 File.Copy(path, @"f:/tt.txt");33 }34catch (Exception e)35 {36 Console.WriteLine("The process failed: {0}", e.ToString());37 }38 }39 }⽅式2:1//流⽂件(⼆进制)操作2private const string name = "Test.data";3public static void Main(String[] args)4 {5//打开⽂件() ,或通过File创建⽴如:fs = File.Create(path, 1024)6 FileStream fs = new FileStream(name, FileMode.CreateNew);7//转换为字节写⼊数据(可写⼊中⽂)8 Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");9//字节数组,字节偏移量,最多写⼊的字节数10 BinaryWriter w = new BinaryWriter(fs);11//设置要写⼊的偏移量12 fs.Position=fs.Length;13// fs.Write(info, 0, info.Length); 这个也可以14 w.Close();15 fs.Close();16//打开⽂件17 fs = new FileStream(name, FileMode.Open, FileAccess.Read);18//读取19 BinaryReader r = new BinaryReader(fs);20for (int i = 0; i < 11; i++)21 {22 Console.WriteLine(r.ReadInt32());23 }24 w.Close();25 fs.Close();在将⼀系列⼆进制数如⽅式1写⼊到file.txt(⼆进制)⽂件后,打开file.txt后显⽰的数据⼆进制数有些错误,有些正确。
二进制文件和文本文件的详细以及如何生成二进制文件1.文本文件:
文本文件的特点:
-文本文件的大小相对较小,因为它们使用了较少的字节来存储字符
信息。
-文本文件可以通过简单的文本读写操作进行处理。
2.二进制文件:
-二进制文件不是人类可读的,因为它们包含了非文本的二进制数据。
-二进制文件的大小通常比文本文件要大,因为它们需要更多的字节
来存储非文本数据。
如何生成二进制文件:
生成二进制文件可以通过编程语言或特定的工具来完成,下面是一些
常见的方法:
1.使用编程语言:
可以使用编程语言如Python、Java或C++来生成二进制文件。
这些
编程语言提供了操作文件和字节的功能,可以将数据以二进制格式写入文件。
例如,Python中的open函数可以以二进制模式打开文件,然后使用write方法将数据写入文件。
2.使用特定的工具:
要生成二进制文件,首先需要确定要存储的数据类型和格式,然后选择相应的工具或编程语言进行处理。
总结:
二进制文件和文本文件是计算机中常见的文件类型。
文本文件由字符组成,是人类可读的,大小相对较小;而二进制文件由二进制数据组成,存储非文本数据,不是人类可读的,大小通常较大。
生成二进制文件可以通过编程语言或特定的工具来实现。
二进制方式读取文本文件的方法-概述说明以及解释1.引言1.1 概述二进制方式读取文本文件是一种在计算机科学中常见的操作方法。
它通过以0和1的二进制形式来表示数据,与传统的基于字符的文本文件读取方式不同。
本文将讨论二进制方式读取文本文件的基本概念、方法和应用,以及总结其优势和局限性,展望未来发展方向。
通过深入了解二进制方式读取文件的相关知识,读者将能够更好地理解这一重要的文件操作方式,并且能够更加灵活和高效地进行文件读取和处理。
1.2 文章结构文章结构部分:本文将分为三个主要部分:引言、正文和结论。
在引言部分中,将简要介绍本文要讨论的主题,并说明文章的结构和目的。
在正文部分中,将分为三个部分来讨论二进制读取文件的基本概念、方法和应用。
在结论部分中,将总结二进制读取文件的优势,并讨论其局限性和未来发展的展望。
通过这样的结构,读者能够清晰地了解本文的内容并对二进制读取文件有更深入的理解。
的内容1.3 目的本文的主要目的是探讨二进制方式读取文本文件的方法。
通过深入分析二进制读取文件的基本概念、方法和应用,旨在帮助读者更深入地了解和掌握二进制文件读取的技术和优势。
同时,也将探讨二进制方式读取文件的局限性,并展望其未来的发展方向。
通过本文的阐述,读者将能够更全面地认识和理解二进制文件读取的重要性、应用价值以及可能的发展趋势,为软件开发和数据处理提供更多的思路和参考。
2.正文2.1 二进制读取文件的基本概念二进制读取文件是指以二进制的形式来解析和读取计算机文件的内容。
在计算机中,一切数据都是以二进制形式存储的,包括文本文件。
因此,通过二进制方式读取文件可以更加直接和高效地获取文件中的数据。
在二进制读取文件的过程中,文件中的数据被以连续的字节序列方式读取,并且可以以不同的方式进行解析和处理。
与文本方式读取文件不同,二进制方式读取文件直接操作文件的底层数据,可以更加自由地处理文件中的各种数据类型,包括整数、浮点数、字符串等。
二进制文件和文本文件的详细以及如何生成二进制文件?技术随笔2010-05-01 19:13:56 阅读226 评论0 字号:大中小订阅这个问题一直困扰了很多年,可能是我没有认真的去思考。
我相信很多人可能和我一样很纠葛,到底编译器也好,汇编器也好是如何工作的呢?到底怎么回事?为什么会运行呢?这是让我们这些看着windows 学习电脑的人真的很难去理解计算机的内部结构。
其实,这一切都只是障眼法,下面我就来给大家细细说说我对计算机的理解。
解答1:编译器是怎么回事?所谓编译器,顾名思义就是将一种文本格式转换成另一种文本格式。
比如将字符串echo "hello"; 转换成printf("hello"); 这其实是php语言转成c语言的一种表示。
这只是一种简单的描述,其实很大一部分的编译器是将源语言转换成了汇编语言。
下面我们来看看 C 语言中的经典hello word,通过gcc编译后生成的汇编是怎么回事。
c语言源码:#include<stdio.h>int main() {printf("hello world\n");}通过编译器后,编译器把这个翻译成了另一套字符串,其实就是汇编语言:.file "hello.c".section .rodata.LC0:.string "hello world".text.globl main.type main, @functionmain:leal 4(%esp), %ecxandl $-16,%esppushl -4(%ecx)pushl %ebpmovl %esp, %ebppushl %ecxsubl $4, %espmovl $.LC0, (%esp)call putsaddl $4, %esppopl %ecxpopl %ebpleal -4(%ecx), %espret.size main, .-main.ident "GCC: (GNU) 4.1.2".section .note.GNU-stack,"", @progbits这就是编译器做的工作了,其实这应该可以理解是吗,其实就是从一种字符串模式到了另一种字符串模式。
但是很多人一定和我一样在思考,字符串模式的转变我会,但是从字符串转到二进制如何转其实我们的大脑真的被这些东西所迷惑了,都错了,字符串是什么?字符串其实也是二进制啊,只不过字符串它不能执行而已。
当我们查看字符串的16进制的时候,其实和二进制的16进制一样,只是我们人为的给字符串赋予了一个abcde...这样的一层显示方式。
而二进制码之所以没有这层皮,是因为他有了另一层含义。
汇编器其实和编译器做的动作是一样的。
只是抽象的层次不同。
这里有点绕是吗?其实不绕。
当我们编译的时候,我们发现了文本文件要比可执行文件小很多,文本文件比汇编文件小6.5倍。
而比二进制要小70倍左右,也就是说一个60字节的文本文件编译成汇编是400个字节左右,再生成二进制大概是4k左右了。
那这到底说明了什么呢?其实是这样的,所谓的二进制其实和我们一般说的ASCII 中的FF,0F是一样的,只不过二进制符合的不是ASCII的这套显示或者作用标准,它采用的是计算机cpu的处理标准。
比如\x41 在ASCII中表示的是A,而到了计算机cpu那里他可能是另一个意思,那么你又会觉得奇怪,那么为什么文本可以显示,而二进制却不能呢?因为文本文件是通过文本文件查看器去重新给文本文件进行处理然后显示的,并不是我们想当然的"直接打开"就能看见,至少也要通过notepad吧?!而二进制进行运行,则是不通过其他软件的,直接丢给cpu的(当然,你也可以用notepad 打开二进制文件,只不过显示的是杂乱的ASCII字符和控制符)。
有些人又会问了,错了吧,windows的二进制丢到linux下能用吗?其实这不是错,windows的二进制丢到linux下之所以不能运行,并不是二进制本身的问题,而是因为linux里没有windows的库,二进制文件运行的时候缺少必要的库才无法运行。
所谓的库,其实就是调用系统资源或者本身就是系统资源的一种程序包(比如显示,接受键盘,窗口啊,等等等等)。
和二进制代码有关的唯一的一方面其实就是cpu。
因为不同的cpu处理的二进制的指令是有区别的。
其实,说穿了,所谓的计算机软件,就是对计算机硬件的一次次的抽象,让它更接近于人类的思考方式和使用习惯。
这其实和我们生活中的很像,比如,我们把硬件比作是树木(当然硬件的材料属性并非木头的属性,它的属性比木头要更全面,可以很坚硬可以很柔软),那么二进制就是木头,可是木头毕竟只是木头,虽然是很好的材料但是单单一颗木头有什么用呢?于是,就有一些最早的程序员用手去处理这个木头,做出了一些简单的凳子椅子。
于是程序员们就像,不如用做出一个木头匕首来切木头,这样不是比手抓更好吗(我前面说了硬件的属性比木头更全面,可以很硬也可以很软)?汇编就好比是这么一个匕首。
用着用着,人们觉得匕首砍木头,虽然可以做出很精细的东西,但是砍大件不行,于是就用匕首加上手工制作出了一把短刀,这就是C语言吧,然后他们在短刀里增加了一些齿牙,让比短刀更有杀伤力,这就是C++。
可以他们发现,这个短刀虽然好,但是它只能砍一种树(因为这种树的木头做的短剑只能砍这种树),于是他们用两种木头各做了一面做了一把短剑,短剑虽然有两面,但是剑的杀伤力明显比刀要小。
这就是我们说的Java。
那么操作系统是什么呢?操作系统我们可以理解为一个工具包,这个说明书里面写了各种用木头制作工具的说明并且提供了很多基础工具和小配件(我们看起来是不是很像木匠了,桌面上放了许多用木头做的小工具)。
然后我们要做的就是用这些配件和工具来做出我们的板凳啊,家具啊,各种各样的东西。
二进制文件和文本文件详解2010-07-30 19:10:00| 分类:C++ | 标签:二进制文件存放文件换行文本|字号大中小订阅对于文件操作中的二进制文件和文本文件的读写,相信还有很多人有疑问,这两种方式有什么不同呢?首先我们记住文件只是计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式,对于文本文件来说,它只是一种特殊形式的文件,它所存放的每一个字节都可以转换为一个可读的字符,就是说文本文件存放数据时,存放的是字符的ASCII码。
有点需要注意,按照文本方式向文件中写入数据时,遇到“换行”符,则会转换为“回车-换行”符,存储,即当存放10(换行符)时,在文件中会存放13 (回车)和10(换行),同时存储的文件就多了一个字节了,而读取文件的时候,遇到13和10,也会合成ASCII10即换行符读取,而当按照二进制文件模式向文件中写入数据时,就会按照数据在内存中的存储形式原样输出到文件中,即存放10时,不会转换为13和10,所以如果以二进制方式向文件写入10时,当以文本方式(例如记事本)打开文件时,看到的会是一个小黑快,而不是换行符,因为在文本文件中,只有遇到13 和10的组合时才会转换为换行符。
为了加深理解,我们来看一道常见的面试题:给你一个整数,例如123456,将这个整数保存到文件中,要求当用记事本打开文件时,显示的是123456。
应该怎么想这题呢?首先记事本是属于文本模式的,所以会将数据作为ASCII码,然后转换为对应的字符,所以在存入数据的时候必须是存放123456这几个字符对应的ASCII码;看看123456各个字符对应的ASCII码:“1” ->49;"2" ->50;......."6" ->54;所以在存入数据的时候,我们应该存入的是49-54几个数字,那样在存的时候我们就有不同选择了。
1、创建一个int型数组,把49-54几个数字分别赋给数组中的元素,2、创建char型数组,直接把1-6几个字符赋给数组元素。
这样结果都是正确的。
最后总结一下,二进制文件存放的就是数据的原始形式,而文本文件存放的就是数据的ASCII码。
用二进制方式存放的数据,可以用文本模式打开,相反亦然。
但是,我们要避免这样做,因为就想上面所说的,当遇到10的时候,这两种模式的处理方式就不一样,所以我们应该用什么模式存放的数据就用什么模式打开。
关于linux和windows的CR, LF, CR/LF 回车换行问题博客分类:•NO分类在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.Dos和windows:采用回车+换行CR/LF表示下一行.UNIX/Linux :采用换行符LF表示下一行.MAC OS :采用回车符CR表示下一行.CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;LF用符号'\n'表示, 十进制ASCII代码是10, 十六制为0x0A.所以Windows平台上换行在文本文件中是使用0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。
在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时,有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错。
很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换。
在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换。
经过这种传输的文件字节数可能会发生变化。
如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。
表一:表二:所以在用println函数的时候,导致的换行在不同操作系统中可能不一样,在windows下表现的是“\r\n”,使用的时候要注意。