6
631229
Unregistered / Unconfirmed
GUEST, unregistred user!
今有若干观测记录,每条记录信息为:
Year(年) Month(月) Day(日) Hour(时) Minute(分) Second(秒) ob1 ob2 ob3
ob1 ob2 ob3为3个测项的观测值,均为整数,ob1<999,ob2<100,0<=ob3<=1
我想用一个二进制文件保存它们,用Year、Month、Day、Hour、Minute、Second、ob1、ob2、ob3构成一
个64位整数作为一条记录,年Smallint占16位,月占4位,日占5位,时占5位,分占6位,秒占10位(以整数表
示,例如381代表38.1秒),ob1占10位,ob2占7位,ob3占1位,;
即:
年、月、日、时、分、秒、ob1、ob2、ob3都以二进制表示后,
年后添加48位二进制零+月后添加44位二进制零+日后添加39位二进制零+时后添加34位二进制零
+分后添加28位二进制零+秒后添加39位二进制零+ob1后添加8位二进制零+ob2后添加一位二进制零
ob3=一个64位整数
实现方法:
MyRecord:=(Year shl 48)+(Month shl 44)+(Day shl 39)+(Hour shl 34)+(Minute shl 28)
+(Second shl 18)+(ob1 shl 8)+(ob2 shl 1)+ob3;
但我用一条实际数据
2002年4月12日19时29分380秒(380秒代表38.0秒),ob1=33,ob2=26,ob3=1实验后,这个方法得到的是负数,而且
达不到我的目的:今后打开该文件读数据时,
MyRecord shr 48=年,
(MyRecord shl 16) shr 60=月...等
请问问题出在哪里,有何方法解决?
Year(年) Month(月) Day(日) Hour(时) Minute(分) Second(秒) ob1 ob2 ob3
ob1 ob2 ob3为3个测项的观测值,均为整数,ob1<999,ob2<100,0<=ob3<=1
我想用一个二进制文件保存它们,用Year、Month、Day、Hour、Minute、Second、ob1、ob2、ob3构成一
个64位整数作为一条记录,年Smallint占16位,月占4位,日占5位,时占5位,分占6位,秒占10位(以整数表
示,例如381代表38.1秒),ob1占10位,ob2占7位,ob3占1位,;
即:
年、月、日、时、分、秒、ob1、ob2、ob3都以二进制表示后,
年后添加48位二进制零+月后添加44位二进制零+日后添加39位二进制零+时后添加34位二进制零
+分后添加28位二进制零+秒后添加39位二进制零+ob1后添加8位二进制零+ob2后添加一位二进制零
ob3=一个64位整数
实现方法:
MyRecord:=(Year shl 48)+(Month shl 44)+(Day shl 39)+(Hour shl 34)+(Minute shl 28)
+(Second shl 18)+(ob1 shl 8)+(ob2 shl 1)+ob3;
但我用一条实际数据
2002年4月12日19时29分380秒(380秒代表38.0秒),ob1=33,ob2=26,ob3=1实验后,这个方法得到的是负数,而且
达不到我的目的:今后打开该文件读数据时,
MyRecord shr 48=年,
(MyRecord shl 16) shr 60=月...等
请问问题出在哪里,有何方法解决?