二进制转换成日期型类?(100分)

  • 主题发起人 主题发起人 foye
  • 开始时间 开始时间
F

foye

Unregistered / Unconfirmed
GUEST, unregistred user!
buffer读入一个二进制文件,其中一段内容为:D8 07 00 00 01 00 00 00 08 00 00 00 14 00 00 00 27 00 00 00,意思为D8 07 00 00表示16进制7D8,即10进制2008,合起来表示2008年1月8日20点39分,请问怎样编写代码?谢谢!
 
在线等,另加100分
 
D8 07 00 00 01 00 00 00 08 00 00 00 14 00 00 00 27 00 00 00
这个是十六进制!!按年月日分开截取转换成十进制就可以转换成tdate了。。。。。


Function HexToDec(const Value :Integer ) : string

var
s : string

begin
s := '$' + IntToStr(Value)

Result := InToStr(StrToInt(s))

end;
 
上面的我也知道,但是只能对16进制字符串转换
 
D8 07
进行交换再转换十进制。
看起来原理有点像PDU码。
一段一段解析吧。
 
自己搞定,感谢两位!
 
type
TMyDateTime = packed record
iYear : Integer;
iMonth : Integer;
iDay : Integer;
iHour : Integer;
iMinute : Integer;
iSecond : Integer;
end;


var
BinDate: TMyDateTime;
DelphiDate: TDateTime;
Stream: TStream;
begin
...
...
FillChar(BinDate, SizeOf(BinDate), 0);
Stream.ReadBuffer(BinDate, SizeOf(BinDate));
with BinDate do
begin
ShowMessage(format('%d年%d月%d日%d点%d分', [iYear,iMonth,iDay,iHour,iMinute,iSecond]));
DelphiDate := EncodeDate(iYear,iMonth,iDay) + EncodeTime(iHour,iMinute,iSecond, 0);
end;
...
...
end;
 
还是楼上的兄弟强,可惜结贴早了,请到这里来领分:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3175424
 
后退
顶部