VC++中向txt文档中写入16进制数据然后以16进制数显示出来

本文介绍了在VC++中如何将16进制数据写入txt文件,并确保打开时以16进制形式显示,而不是出现乱码。关键在于使用CString的Format()函数将16进制数据转换为字符串,同时讨论了Format函数的使用细节和各种格式指令。
摘要由CSDN通过智能技术生成

今天写了一个小软件的代码,其中用到的一个功能是将存放在一个数组里面的音频数据输出给硬盘的一个txt文件。每个音频数据的长度是一个char,如果直接用UltraEdit以二进制方式打开音频文件就会看到真实6进制数据。

但是当将数据写入txt文件中后,再打开txt文档就会乱码,用UltraEdit以二进制方式打开发现数据和原始音频数据一样。究其原因,主要是因为txt文档默认显示方式是以字符方式显示的,所以把一堆16进制数当做ASCII码进行显示的,当然是乱码。

因此,现在的问题就是,怎样把16进制数写入txt文档,显示的时候也是对应的16进制数呢?例如,我写入0xa9,当打开txt文档时仍然显示0xa9。世上无难事,只怕百度谷歌之。在网上搜了半天,很凌乱,没有十分对题的答案,只有自己一点点试一试了。最后找到了一种方法成功实现了所要的功能。

具体来说就是利用CString类的Format()函数将音频数据数组里的16进制数转换为CString。不多说,贴代码:

tempstring.Format(_T("%02X "),*(sampleData+i));

其作用是将sampleData为首指针的数组中第i个16进制数据格式化为字符串形式。

_T()宏的作用是如果编译采用Unicode方式编译,则采用两字节编码;若采用ANSI方式编译,则采用一字节编码。

 

在解决这个问题之后,还发现了一个问题,就是CString类对象的长度是有限制的,如果太长,就需要达到一定长度之后就将CString字符串写入硬盘或者文件缓冲区,再继续将后面的数组数据转换为CString。

下面是网上找的F

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值