声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1843|回复: 4

[编程技巧] 为何16进制的负整数写入文件后变成了浮点数

[复制链接]
发表于 2008-2-13 15:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

例如,向量data中的数据是10进制的:100,200,-4(对应的十六进制表示为:64,c8,fffc)
我要在data.txt中保存为64  c8  12c 格式
我用了如下命令
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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-2-14 09:46 | 显示全部楼层
原帖由 iiiooo 于 2008-2-13 15:05 发表
如何把负数以16进制格式写入文件中?

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

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


help fprintf 一下,看看 %x 能否控制小数的位数
 楼主| 发表于 2008-2-14 11:55 | 显示全部楼层
不明白你的意思
这跟小数的位数有什么关系?
能解释的详细点吗?
发表于 2008-2-14 15:30 | 显示全部楼层
原帖由 iiiooo 于 2008-2-14 11:55 发表
不明白你的意思
这跟小数的位数有什么关系?
能解释的详细点吗?


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

评分

1

查看全部评分

 楼主| 发表于 2008-2-14 21:45 | 显示全部楼层
好像是不支持负数
看来是没有现成的函数了
只能自己编了
多谢帮忙
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-11 17:20 , Processed in 0.079258 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表