RDL.bin是从设备内把所有的记录打包生成的一个二进制文件,格式如下,每10个字节为一组数据。卡号4个字节,后六位为日期时间
01 00 00 07 01 25 14 28 53 BD
01 00 00 07 01 25 15 09 52 9E
01 00 00 07 01 25 15 10 23 76
01 00 00 07 01 25 15 33 15 8B
例如:01 00 00 07 由低到高。(转成10进制得到卡号)
01 25 15 09 52 9E 年月日时分秒
请问我应该怎么解析这个十六进制文件,把包内的记录通过都循环读出来?
01 00 00 07 01 25 14 28 53 BD
01 00 00 07 01 25 15 09 52 9E
01 00 00 07 01 25 15 10 23 76
01 00 00 07 01 25 15 33 15 8B
例如:01 00 00 07 由低到高。(转成10进制得到卡号)
01 25 15 09 52 9E 年月日时分秒
请问我应该怎么解析这个十六进制文件,把包内的记录通过都循环读出来?
li_i = 1do while li_i < ll_record_leng
lb_record = blobmid(tot_b,li_i,10)
li_temp=integer(string(asc(char(blobmid(lb_record,1,1)))))
if li_temp<0 then li_temp = 256 + li_temp
ls_id1 = li_temp
li_temp=integer(string(asc(char(blobmid(lb_record,2,1)))))
if li_temp<0 then li_temp = 256 + li_temp
ls_id2 = li_temp*256
li_temp=integer(string(asc(char(blobmid(lb_record,3,1)))))
if li_temp<0 then li_temp = 256 + li_temp
ls_id3 = li_temp*65536
ll_empbh = ls_id3 + ls_id2 + ls_id1
ls_date1=string(2000+int(asc(char(blobmid(lb_record,4,1)))/16) + mod(asc(char(blobmid(lb_record,4,1))),16))
ls_date2=string(int(asc(char(blobmid(lb_record,5,1)))/16)) + string(mod(asc(char(blobmid(lb_record,5,1))),16))
ls_date3=string(int(asc(char(blobmid(lb_record,6,1)))/16)) + string(mod(asc(char(blobmid(lb_record,6,1))),16))
ld_date = date(ls_date1+"-"+ls_date2+"-"+ls_date3)
ls_time1=string(int(asc(char(blobmid(lb_record,7,1)))/16)) + string(mod(asc(char(blobmid(lb_record,7,1))),16))
ls_time2=string(int(asc(char(blobmid(lb_record,8,1)))/16)) + string(mod(asc(char(blobmid(lb_record,8,1))),16))
ls_time3=string(int(asc(char(blobmid(lb_record,9,1)))/16)) + string(mod(asc(char(blobmid(lb_record,9,1))),16))
lt_time = time(ls_time1 +":"+ ls_time2 +":"+ ls_time3)
ll_newrow = dw_yskq.insertrow(0)
dw_yskq.setitem(ll_newrow,"bh",ll_empbh)
dw_yskq.setitem(ll_newrow,"xm","")
dw_yskq.setitem(ll_newrow,"rq",ld_date)
dw_yskq.setitem(ll_newrow,"sj",lt_time)
dw_yskq.setitem(ll_newrow,"dh",ls_dh) li_i = li_i + 10
loop
//文件操作之读取ini文件,返回Arraylist,每个元素为1行
public static ArrayList ReadIniFile()
{
//从文件config.ini中读取数据
FileStream fs = new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.Read);
StreamReader myrd = new StreamReader(fs, Encoding.Default);
ArrayList tempstr = new ArrayList();
while (myrd.Peek() >= 0)
{
tempstr.Add(myrd.ReadLine());
}
myrd.Close();
return tempstr;
}
我以前试过一种办法读出的是个r,用你的方法好像也是,可以请教下应该如何正确读取吗?