C++中怎么将二进制数据转换成ASC码

我有一组double型的数组,要将他存到txt文件中,但是C++中存的形式是二进制,txt中显示怎么是按ASC码显示的,比如C的数据是97,存到txt中却显示为a,怎么才能存啊?

第1个回答  推荐于2016-07-06
你存在txt文件中的已经是二进制文件了,你打开txt文件时,操作系统会自动对这个二进制数据进行编码转换(如果你安装的是中文操作系统的话一般会用unicode编码转换,英文操作系统的话会用ASC编码转换),所以你看到的是系统转换后的样式。
如果你想在打开txt文件时看到的是二进格式的数字,那你只有先把double型数组转换成字符型然后保存到文件中就可以了!追问

怎么转换啊?如果用ecvt函数的话不能保存小数点啊

追答

你如果只是想存double数组中的数据的话,很简单,只要循环把这个数组中的每一个double型变量依次保存到文件中就可以了啊!
是不是你写文件时把double型变量又转换成其它格式了,记得存数据时要用%d格式。
或者你直接对整个数组变量进行写文件保存?

本回答被提问者采纳
第2个回答  2011-05-16
你要存的是十进制数据吗?
dec 格式化为十进制数值数据 输入和输出
endl 输出一个换行符并刷新此流 输出
ends 输出一个空字符 输出
hex 格式化为十六进制数值数据 输入和输出
oct 格式化为八进制数值数据 输入和输出
setpxecision(int p) 设置浮点数的精度位数 输出
比如要把123当作十六进制输出:file1<<hex<<123;要把3.1415926以5位精度输
出:file1<<setpxecision(5)<<3.1415926。
第3个回答  2011-05-16
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 100

int main()
{
int i,j,n,len;
char st[]="48494A4B4C4D4E4F";
char st2[N];
int char2num(char ch);
for (i=0;i<N;i++)
st2[i]=0;

len=strlen(st);
j=0;
for (i=0;i<len;i+=2)
{
n=char2num(st[i])*16+char2num(st[i+1]);
st2[j++]=n;
}
printf("st2=%s",st2);

getch();
return 0;
}

int char2num(char ch) /*将字符转成数字*/
{
if (ch>='a')
return ch-'a'+10;
else if (ch>='A')
return ch-'A'+10;
else
return ch-'0';
}

/*我转出来的跟你的结果有点不一样,你的结果应当错了。*/
第4个回答  推荐于2016-08-28
将double、int这样的数值型数据,直接写入文件,形成的是数据文件,其数据格式是按照内存中实际存储方式来写入的,不是文本方式。
如果希望将数值类型保存为可视化的文本文件,你需要将数值格式化为字符串,再写入文件就可以了(也可以直接使用格式化函数,如fprintf)。
写一个double类型数组,你可以参考一下代码:
char tmp[40];
double darray[10];
FILE *fp;
fp=fopen("dat.txt","w");
for(int i=0;i<10;i++){
sprintf(tmp,"%lf \n",darray[i]);//注意,高版本VS中要用sprintf_s

fwrite(tmp,strlen(tmp),1,fp);

}
fclose(fp);
数值型数据在内部存储中都是以二进制方式保存的,这样方便进行数值运算,在显示和保存的时候,如果希望变成可阅读的十进制数据,C/C++提供了很多格式化的方法,上述代码只是其中一例,各种格式化的概念基本一致,需要注意的是各个类型数据的格式化参数不同,例如double类型要用%lf或%g,而int类型要用%d

C++中怎么将二进制数据转换成ASC码
比如要把123当作十六进制输出:file1<<hex<<123;要把3.1415926以5位精度输 出:file1<<setpxecision(5)<<3.1415926。

如何使C++将数字转换为ASC2码表中对应的符号输出?
include <stdio.h>void main(){ int i; \/\/这里i也可以定义成unsigned char 类型,下面代码无区别 for( i=0;i<128;i++ ) printf("%c : %d\\n", i, i ); \/\/同样的变量值,按不同格式输出不同类型的数据}C++方式:直接对相关类型进行强制转换,如:include <iostream>using nam...

C++中怎么把字母转换为ASCII码?
C++ 电脑 方法\/步骤 1、定义两个整型变量a和A,保存相应字母的ASCII码。2、定义一个字符变量ch,保存需转换的字符。3、给字符变量ch赋初值,为小写字母a。4、把字符变量中的值,赋给a,实现ASCII码的转换。5、将a的ASCII码,在输出窗口中输出。6、字符变量中的字符,更改为大写字母A。7、大写字...

C++用ofstream将数字变成ascii码写入文件的问题。求解释
os << (char)65 << (char)66 << ...

C++将数字转换成ASCⅡ码
void two(int,char s[]);int main(){ int num,s[10];char w[10];cout<<"请输入要转换的数字:";cin>>num;cout<<"\\n\\n用递归方法转换成ASC II码:"<<endl;one(num,0,s);cout<<"用循环方法转换成字符串:"<<endl;two(num,w);cout<<endl;system("pause");return 0;} void ...

c++中怎样输出一个字符的ASCⅡ码?
可以将字符转为整型(int)再输出即可输出ASCII码值。在C++语言中,输出到终端一般使用cout的<<操作。字符型变量,存储在char类型的变量中,或者直接是字符常量。当cout<<字符变量或常量时,输出的是对应字符。说明cout对输出的类型是有做判断,并区分类型进行输出的。ASCII码值属于整型,所以,可以把字符型...

c++怎么读取输出asc格式文?
读取输出asc格式文件的C++程序如下:首先,定义一个结构体Line,用于存储文件中的每一行数据。结构体包含日期、时间、开盘价、最高价、最低价、收盘价、值和跳动计数。然后,使用新的动态数组m来存储所有行的数据。通过检查m是否为null,确保内存分配成功。接下来,读取文件数据。使用循环遍历文件中每行...

c++怎样输出字符的ASCII码?
思路:先定义字符ch,输入字符,在把字符强制转换成整数就是该字符的ASCII码值,即int(ch)。参考代码: #include<iostream>using namespace std;int main(){char ch;cin>>ch;cout<<int(ch)<<endl;return 0;}\/*运行结果:A65*\/

C++用ofstream将数字变成ascii码写入文件的问题。求解释
ascii码最高到255。没有256 另外方式是这样的:os << (char)65 << (char)66 << ...

c++中如何输出字符串的ASCII码
void asc2bin(int ch){ int i, a[8];for (i = 0; i < 8; ++i){ a[8 - i - 1] = ch % 2;ch \/= 2;} for (i = 0; i < 8; ++i){ cout << a[i];if ((i + 1) % 4 == 0)cout << ' ';} } void main(){ char str[100];int i = 0;cout << "...

相似回答