关于C++如何将txt文件中的数据导入到二进制文件中的

前言:二进制文件与文本文件的区别:

文本文件:写入数字n,实际是写入的字符n;

二进制文件:写入数字n,实际是写入的整数n。

有了这个概念,我们继续往下进行~

一、准备一个txt格式的文件。

我这里准备了一个txt格式的文件,部分内容如下:

注:这里txt中的数据是以“空格”的形式分隔开的。

二、操作txt文件内容

1、其中一种读取方式

const char* fileName = "C://Users//lenovo//Desktop//123.txt";  //文件路径
FILE* fp = fopen(fileName, "r+");  //以读的方式打开123.txt文件
if (fp == NULL) return 0;  //空指针则返回0,文件打开失败
fseek(fp, 0, SEEK_END);    //将文件指针移动至文件末尾
size_t size = ftell(fp);  //计算文件大小,单位:Byte
fseek(fp, 0, SEEK_SET); //把文件指针移回初始位置(文件开头)
char* data;  //用于存放txt中内容的字符串指针
data = (char*)malloc(sizeof(char)*size);  //给data分配内存
fread(data,size, 1, fp);  //将txt文件中的内容读取到字符串data中

 2、去除字符串中的空格(一种笨方法,因为使用vc6.0编译的,网上的方法使用起来有些问题,这里就自己写的)

string ss = ""; //用于拼接非空格字符串

for (int j=0;j<ss.size();j++)
{
	if (data[j] != ' ')  //若当前字符不为空格
	{
		ss += data[j];  //拼接字符
	}
}

3、将char类型数据转化为unsigned short类型数据

for (int j=0;j<ss.size();j++)  //去除data中的空格
{
	if (data[j] != ' ')
	{
		ss += data[j];
	}
}

for (int i=0; i<ss.size(); i++)
{
	if (i%2 == 0)  //取数据偶数位,即我需要的一个字节的高4位
	{
		if (ss[i] >= 'A')  //若字符为字母
		{
			a = ss[i] - 'A' + 10;  //因为是字符类型的,转化为int型是ASCII码值,“A”在十六进制中表示的是10,“B”是11,因此最后+10
		}
		else
		{
			a = ss[i] - '0';
		}
	}
	else  //取数据奇数位,即我需要的一个字节的低4位
	{
		if (ss[i] >= 'A')
		{
			b = ss[i] - 'A' + 10;
		}
		else
		{
			b = ss[i] - '0';
		}

		cc[nn] = (a << 4) + b;  //将一个字节的低4位和高4位拼接成一个完整的字节

		nn++;
	}
}

 三、将处理好的数据写入二进制文件中

文件写入代码如下:

FILE* fo = fopen("C://Users//lenovo//Desktop//123.bin", "wb+");  //以二进制写入方式打开123.bin文件(若没有123.bin文件,则自动创建)
fwrite(cc, (sizeof(cc) / sizeof(cc[0])), 1, fp);  //将存放十进制数据的数组cc以二进制的方式写入到123.bin中
fclose(fo);  //关闭文件操作句柄

 四、完整代码如下:

const char* fileName = "C://Users//lenovo//Desktop//123.txt";  //文件路径
FILE* fp = fopen(fileName, "r+");  //以读的方式打开123.txt文件
if (fp == NULL) return 0;  //空指针则返回0,文件打开失败
fseek(fp, 0, SEEK_END);    //将文件指针移动至文件末尾
size_t size = ftell(fp);  //计算文件大小,单位:Byte
fseek(fp, 0, SEEK_SET); //把文件指针移回初始位置(文件开头)
char* data;  //用于存放txt中内容的字符串指针
data = (char*)malloc(sizeof(char)*size);  //给data分配内存
fread(data,size, 1, fp);  //将txt文件中的内容读取到字符串data中
string ss = ""; //不带空格的字符串
BYTE cc[256];  //存放最终数据的数组
memset(cc,0,256);  //初始化cc数组

unsigned short a=0,b=0,temp=0,nn=0;  //a为字节高4位,b为字节低4位,temp为临时变量,nn为计数变量
for (int j=0;j<ss.size();j++)  //去除data中的空格
{
	if (data[j] != ' ')
	{
		ss += data[j];
	}
}

for (int i=0; i<ss.size(); i++)
{
	if (i%2 == 0)  //取数据偶数位,即我需要的一个字节的高4位
	{
		if (ss[i] >= 'A')  //若字符为字母
		{
			a = ss[i] - 'A' + 10;  //因为是字符类型的,转化为int型是ASCII码值,“A”在十六进制中表示的是10,“B”是11,因此最后+10
		}
		else
		{
			a = ss[i] - '0';
		}
	}
	else  //取数据奇数位,即我需要的一个字节的低4位
	{
		if (ss[i] >= 'A')
		{
			b = ss[i] - 'A' + 10;
		}
		else
		{
			b = ss[i] - '0';
		}

		cc[nn] = (a << 4) + b;  //将一个字节的低4位和高4位拼接成一个完整的字节

		nn++;
	}
}
fclose(fp);


FILE* fo = fopen("C://Users//lenovo//Desktop//123.bin", "wb+");  //以二进制写入方式打开123.bin文件(若没有123.bin文件,则自动创建)
fwrite(cc, (sizeof(cc) / sizeof(cc[0])), 1, fp);  //将存放十进制数据的数组cc以二进制的方式写入到123.bin中
fclose(fo);  //关闭文件操作句柄

五、转化为二进制的文件内容如下:

注:上述是我使用的一种笨方法对文件进行的操作,因为水平有限,因此本文篇幅过长,下一章将介绍如何读取二进制文件,并将该二进制文件的内容再转化为十进制数据进行相关操作~

感谢大家的支持,有写的不对的地方欢迎大家指正~~~ 

### 回答1: 你可以使用下面这段 Python 代码来打开一个.txt文件并以二进制的方式写入: ``` with open('example.txt', 'wb') as f: # 写入数据 f.write(b'This is an example text.') ``` 其,`example.txt`是你要打开的文件名,`wb`表示以二进制的方式打开文件并写入数据。你可以把上面的代码替换成你自己的文件名和数据。 ### 回答2: 要打开一个.txt文件并以二进制方式写入,可以按照以下步骤进行操作。 第一步,导入必要的模块。我们需要使用Python内置的`open()`函数来打开文件。 第二步,使用`open()`函数打开文件。指定文件路径和文件名,并以写入二进制模式打开文件。可以使用`"wb"`作为第二个参数。 第三步,开始写入二进制数据。我们可以使用`write()`方法将二进制数据写入文件。 第四步,关闭文件。在完成写入操作后,务必关闭打开的文件,以确保文件资源被正确释放。 下面是一个使用Python代码实现的例子: ```python # 导入必要的模块 import os # 打开文件并以二进制写入模式打开 file_path = 'path_to_file.txt' # 替换为你文件的路径 with open(file_path, 'wb') as file: # 写入二进制数据 binary_data = b'\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64' # 替换为你的二进制数据 file.write(binary_data) # 关闭文件 file.close() ``` 在上述代码,我们使用`open()`函数打开了txt文件,并在`with`语句块操作文件。在`with`语句块结束后,文件会自动关闭。通过`write()`方法将指定的二进制数据写入文件。请注意,`b''`表示二进制数据在Python的表示形式。 请确保在实际操作替换代码的`file_path`和`binary_data`为你自己的路径和数据。 ### 回答3: 要打开一个.txt文件并以二进制方式写入,可以按照以下步骤进行操作: 首先,我们需要导入Python的内置模块 `io`。然后使用 `open()` 函数来打开文件,将文件路径和打开模式作为参数传递给它。在这个例子,我们要以二进制的方式写入,所以打开模式应该是 `"wb"`。 接下来,我们可以使用 `write()` 方法将二进制数据写入打开的文件对象。我们可以先将要写入的文本内容储在一个字符串变量,然后使用 `encode()` 方法将其转换成二进制。 最后,记得在程序结束时关闭文件,以释放资源。 下面是一个示例代码,演示了如何以二进制方式打开一个.txt文件并进行写入: ```python import io # 打开文件 with io.open('文件路径.txt', 'wb') as file: # 要写入的文本内容 text = "这是要写入的文本内容" # 将文本内容转换成二进制 binary_text = text.encode() # 写入二进制数据 file.write(binary_text) print("写入完成") ``` 注意,你需要将 `文件路径.txt` 替换为你实际的文件路径。以上代码将会将字符串内容 `"这是要写入的文本内容"` 以二进制方式写入到指定的.txt文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值