iiiooo 发表于 2008-2-13 15:05

为何16进制的负整数写入文件后变成了浮点数

如何把负数以16进制格式写入文件中?

matlab产生了一个数据向量,数据中包含负数
希望把这些数据写入一个文件中保存,要求是把数据写成16进制表示(用16bit)

例如,向量data中的数据是10进制的:100,200,-4(对应的十六进制表示为:64,c8,fffc)
我要在data.txt中保存为64c812c 格式
我用了如下命令
fid=fopen('data.txt','w');
m=fprintf(fid,'%x\n',data);
fclose(fid)

我需要的结果是
64
c8
fffc
为什么保存出来结果是
64
c8
-4.000000e+000

也就是说正整数表示是正确的,负数却表示成了浮点
请问这是什么原因有什么办法解决?

[ 本帖最后由 eight 于 2008-2-14 09:45 编辑 ]

eight 发表于 2008-2-14 09:46

原帖由 iiiooo 于 2008-2-13 15:05 发表 http://www.chinavib.com/forum/images/common/back.gif
如何把负数以16进制格式写入文件中?

matlab产生了一个数据向量,数据中包含负数
希望把这些数据写入一个文件中保存,要求是把数据写成16进制表示(用16bit)

例如,向量data中的数据是10进制的:100,200,-4 ...

help fprintf 一下,看看 %x 能否控制小数的位数

iiiooo 发表于 2008-2-14 11:55

不明白你的意思
这跟小数的位数有什么关系?
能解释的详细点吗?

eight 发表于 2008-2-14 15:30

原帖由 iiiooo 于 2008-2-14 11:55 发表 http://www.chinavib.com/forum/images/common/back.gif
不明白你的意思
这跟小数的位数有什么关系?
能解释的详细点吗?

估计这些转换函数不支持负数,你 help dec2hex 就知道了。负数的话,自己编程写一个吧

iiiooo 发表于 2008-2-14 21:45

好像是不支持负数
看来是没有现成的函数了
只能自己编了
多谢帮忙
页: [1]
查看完整版本: 为何16进制的负整数写入文件后变成了浮点数