BIN文件中存储的是16进制文件,如何把他们转化成10进制的,请用C语言。
来源:百度知道 编辑:UC知道 时间:2024/09/12 19:01:07
文件名字叫111.bin,存储的是16进制数据,cc,f1,0a,0b,0c,这种类型的数,如何读取他们,并将他们转换成10进制的整形存到一个数组a[]里,a为整形数组.如果可能的话,请把读取和转化一起告诉我,还有如何确定这个a数组的大小。读取是fopen,转化是itoa但是不知道如何结合。
所有计算机里的数据都是2进制的,只是你看到的是他的不同种形式,你所谓的16进制数据也是用那个u什么32的工具打开的,那个工具打开的就是以16进制打开的,比如说cc,那就是8位2进制的16进制形式,那是一个字节,一个字节8位2进制,2位16进制,int 型两字节,long 4,double 8,这些都是最基本的,不要以为数据类型这些基本的东西没用,有时候他们比算法更重要,所谓不积跬步无以至千里就是这个意思。
itoa是把一个“整型数”转化成指定的某进制数存放进“字符数组”里
你用fopen的话首先就会把文件中的数据读入到字符数组中,那么就不能使用itoa来将“字符数组”转化成“整型数组”了
如果你要把字符数组里的数据转到整型数组中去
假设你的编译器的整型数据占两字节,那么就要分两种情况
第一,你是想将字符数组中的每个字符都独占一个整型单元
这时你可以新申请一个整型数组,然后用强制转换符(int)将字符数组中每个元素依次转换后赋给整型数组.
第二,如果你是想将字符数组中的字符将一个整形单元占满
那么你可以用强制转换符(int *)对字符数组的地址进行转化再用间接访问符*来对整型数组的每个元素进行赋值
最后,fopen仅仅是一个打开文件的函数,你要再读取文件中的数据的话可以使用fread,这个函数的返回值是你实际读取的字节数,可以通过这个值得到数组的大小