一个数值转换的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 coffee6340
  • 开始时间 开始时间
C

coffee6340

Unregistered / Unconfirmed
GUEST, unregistred user!
要求输入的是一个浮点型的数值或者是一个AnsiString的串也可以,把其转换成固定长度的数值,比如两字节或者四字节,最高位是符号位,次三位是小数点位,余下的12位或28位才是真正的数值,请问一下如何实现啊?好急,谢谢啦。
 
要求输入的是一个浮点型的数值或者是一个AnsiString的串也可以,把其转换成固定长度的数值,比如两字节或者四字节,最高位是符号位,次三位是小数点位,余下的12位或28位才是真正的数值,请问一下如何实现啊?好急,谢谢啦。
 
没明白楼住的意思,总结可能有三种
1直接转换:有没搞错,浮点数和ansistring的类型数本身size就比两字节大得多怎么压缩到两个字节呀,这就像非要把一个8字节的长整形压缩到2字节存储,而且就算按照位存储,计算到bit都是1010101了哪来的小数点符号为什么的,除非按照汇编原理浮点数存储法..我晕
2:拆分存储,这倒没什么难的一个字节一个字节的自己处理呗
3:就像c的printf(%d,..一样把一个字符串用%s输出就是字符串,按照%d输出就是数字而且可以还原,重启数值不变,字节数超短,你可以用c试一次下,delphi我不知道怎么转换的
 
to funxu :
也不完全是你列出的第一种情况,因为数据是从单片机采集上来的,估计其值如果是用两字节表示的话,大小不会超过2的12次方,然后再对最高4位进行相应的处理。这是我目前对这个东西的理解[:)]
 
不知道协议,用猜的方法,难哦[:(]
 
先格式化字符,然后分别转换到二进制0101010101101101等,
再合成:
符号一位 1
小数点位置 111
数值 111111111111
再To 16进制
 
谢谢各位啦
 
后退
顶部