有人有从旧MSB转换为ieee(delphi real)的代码吗?
在Google中,我只创建了4位转换,但不是8位:
function MBF2IEEE(MBFVal: Single): Single;
var
Output: array[1..4] of byte;
Value: Single absolute Output;
// Sign: byte;
LSB: Byte;
begin
try
Output[4] := TInput(MBFVal)[4];
{ if value is non-zero, do some bit shuffling }
if Output[4] > 2 then begin
Output[3] := TInput(MBFVal)[3];
Output[2] := TInput(MBFVal)[2];
Output[1] := TInput(MBFVal)[1];
Output[4] := Output[4] - $02;
LSB := Output[4] and $01;
Output[4] := (Output[4] shr 1) or (Output[3] and $80);
if LSB = 0 then
Output[3] := Output[3] and $7f
else
Output[3] := Output[3] or $80;
{ else return 0 }
end else begin
Output[1] := 0;
Output[2] := 0;
Output[3] := 0;
Output[4] := 0;
end;
Result := Value;
except
Output[1] := 0;
Output[2] := 0;
Output[3] := 0;
Output[4] := 0;
end;
end;
(来自此页面 http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20245266.html)
谢谢!
答案 0 :(得分:0)
使用它之后,转换双打并不像单身那么容易..(指数和螳螂不匹配)。
即使链接中的C代码在某些情况下也不能正常工作(可能是因为它是为16位编译器设计的?我不知道,还没有时间进行全面测试)..!
我遇到过这个解决问题的asm库(它说它是免费的)(必须像C dlls一样导入它):
http://www.microdexterity.com/demos/mbfiee32.zip
此后的下一个好运,