假设我在Matlab中有以下单精度浮点数
a = single(-2.345)
我想将数字表示为一个4字节的数组,遵循IEEE 754.正确的表示应该是
b = [123, 20, 22, 192]
目前,我正在使用fread
和fwrite
进行转换,例如
fid = fopen('test.dat','wb')
fwrite(fid,a,'float')
fclose(fid)
fid = fopen('test.dat','rb');
b = fread(fid)'
这已经足够了,但我怀疑有一种更简单,更快捷的方式来进行转换而无需从文件读取/写入。
有一些关于将字节数组转换为浮点数的帖子(例如here),但我不确定如何继续向相反的方向前进。有什么建议吗?
答案 0 :(得分:4)
您可以使用typecast
函数在不更改基础数据的情况下在数据类型之间进行转换,即使用其他类型重新解释数据。在您的情况下,您将需要从single
转换为uint8
(字节)数据类型。这是由
a = single(-2.345);
typecast(a,'uint8')
ans =
123 20 22 192
根据需要。