//byte[]pic=parseByte(fsnBytes,4);
//Strings=MessageUtil.toBinaryString(pic);
//i++;
//}
}
publicFsnBodygetSnoExpImg(byte[]fsnBytes){
FsnBodybody=newFsnBody();
//设置日期时间
intdata=parseInt(fsnBytes);
inttime=parseInt(fsnBytes);
//System.out.println("data="+data);
//System.out.println("time="+time);
/*if(time<0){
time=-time;
}*/
inty=data>>9;
intm=(data-(y<<9))>>5;
intd=data-(y<<9)-(m<<5);
inthh=time>>11;
intmm=(time-(hh<<11))>>5;
intss=(time-(hh<<11)-(mm<<5))<<1;
/*
StringDateStr=StrUtil.numAddZero(String.valueOf((y+1980)),4)+"-"+StrUtil.numAddZero(String.valueOf(m),2)+"-"+StrUtil.numAddZero(String.valueOf(d),2);
StringTimeStr=hh+":
"+mm+":
"+ss;
body.setDateStr(DateStr);
body.setTimeStr(TimeStr);
//*/
//*
StringBufferDateBuf=newStringBuffer();
StringBufferTimeBuf=newStringBuffer();
DateBuf.append(y+1980);
DateBuf.append("-");
DateBuf.append(FsnTools.numAddZero(m,2));
DateBuf.append("-");
DateBuf.append(FsnTools.numAddZero(d,2));
TimeBuf.append(FsnTools.numAddZero(hh,2));
TimeBuf.append(":
");
TimeBuf.append(FsnTools.numAddZero(mm,2));
TimeBuf.append(":
");
TimeBuf.append(FsnTools.numAddZero(ss,2));
body.setDateStr(DateBuf.toString());
body.setTimeStr(TimeBuf.toString());
body.setDateStr(DateBuf.toString());
body.setTimeStr(TimeBuf.toString());
body.setDateTime(body.getDateStr()+""+body.getTimeStr());
//设置货币真假残和旧币标志
body.setTfFlag(parseInt(fsnBytes));
//设置货币错误
StringBuffererrorCode=newStringBuffer();
/*for(inti=0;i<3;i++){
intcode=parseInt(fsnBytes);
if(code<13&&code>0){
errorCode+=code+",";
}
}
if("1".equals(map.get("TfFlag")))
errorCode=errorCode.substring(0,errorCode.lastIndexOf(","));
else
errorCode="0";*/
for(inti=0;i<3;i++){
intcode=parseInt(fsnBytes);
if(i==0){
errorCode.append(code);
}else{
errorCode.append(":
");
errorCode.append(code);
}
}
body.setErrorCode(errorCode.toString());
//设置币种标志
StringmoneyFlag="";
for(inti=0;i<4;i++){
intflag=parseInt(fsnBytes);
if(flag!
=0){
moneyFlag+=(char)flag;
}
}
body.setMoneyFlag(moneyFlag);
//设置年版或版本号标志
intver=parseInt(fsnBytes);
//body.setVer(FsnTool.deMoneyVer(ver));
body.setVer(ver);
//设置币
body.setValuta(parseInt(fsnBytes));
//设置冠字号位
body.setCharNum(parseInt(fsnBytes));
//设置冠字
StringBufferno=newStringBuffer();
for(inti=0;i<12;i++){
intNo=parseInt(fsnBytes);
if(No!
=0)
no.append((char)No);
}
body.setSno(no.toString());
//设置机具编号
StringBuffermachineSNo=newStringBuffer();
for(inti=0;i<24;i++){
intMsno=parseInt(fsnBytes);
if(Msno!
=0)
machineSNo.append((char)Msno);
}
body.setMachineSno(machineSNo.toString());
//设置冠字号保留字
body.setReserve1(parseInt(fsnBytes));
//System.out.println("时间="+body.getDateStr()+""+body.getTimeStr()+"|真假币标志="+body.getTfFlag()+"|表示最多3组假币特征码="+body.getErrorCode()+"|"+
//"|币种标志="+body.getMoneyFlag()+"|年版或版本号标志="+body.getVer()+"|币值="+body.getValuta()+"|冠字号码字符数="+body.getCharNum()+"|存放识别的冠字号码="+
//body.getSno()+"|机具编号="+body.getMachineSno()+"|保留字1="+body.getRecordNum());
returnbody;
}
publicvoidsetHead(byte[]fsnBytes)throwsException{
this.filePos=0;//读取文件头数据的当前指针位置,设置字节位移从0开始
if(this.fm==null){
this.fm=newFsnModel(this.fsnFilePath);
}
int[]headStart=newint[4];
for(inti=0;i<4;i++){
headStart[i]=parseInt(fsnBytes);
//System.out.println("headStart["+i+"]="+headStart[i]);
}
fm.setHeadStart(headStart);
int[]headString=newint[6];
for(inti=0;i<6;i++){
headString[i]=parseInt(fsnBytes);
//System.out.println("headString["+i+"]="+headString[i]);
}
fm.setHeadString(headString);
longcounter=parseLong(fsnBytes);
//System.out.println("counter="+counter);
fm.setCounter(counter);
int[]headEnd=newint[4];
for(inti=0;i<4;i++){
headEnd[i]=parseInt(fsnBytes);
//System.out.println("headEnd["+i+"]="+headEnd[i]);
}
fm.setHeadEnd(headEnd);
}
publicintparseInt(byte[]fsnBytes){
intret=(int)FsnTools.demarshallintLittle(fsnBytes,filePos,intstep);
this.filePos+=intstep;
//System.out.println("this.filePos="+this.filePos+"||ret="+ret);
returnret;
}
publiclongparseLong(byte[]fsnBytes){
longret=FsnTools.demarshallintLittle(fsnBytes,filePos,stringstep);
this.filePos+=stringstep;
returnret;
}
publicbyte[]parseByte(byte[]fsnBytes,intlength){
byte[]ret=FsnTools.convertByteMarshall(fsnBytes,filePos,length);
this.filePos+=length;
returnret;
}
}
packagebean;
publicclassFsnBody{
privateStringDateStr;//验钞启动日期
privateStringTimeStr;//验钞启动时间
/**日期+时间
*指定年月日的日期数据的产生算法为:
Date=((Year-1980)<<9)+(Month<<5)+Day
其中:
Year为年份,大于等于1980;Month为月份;Day为日;
指定时分秒的时间数据产生算法为:
Time=(Hour<<11)+(Minute<<5)+(Second>>1)
其中:
0≤Hour<24,0≤Minute<60,0≤Second<60
*/
privateStringDateTime;//验钞启动日期+时间
privateintTfFlag;//真假币标志,0为假币或可疑币,1为真币,2为残币(清分机适用),3为旧币(清分机适用);
privateStringErrorCode;//表示最多3组假币特征码(特征码有12种,分别为1,2,3,4,5,6,7,8,9,10,11,12),真币时填0;如果只有一组特征码,把特征码填在ErrorCode[0],则其余两组填0;如果有两组特征码,把特征码填在ErrorCode[0]和ErrorCode[1],剩余的一组填0
privateStringMoneyFlag;//币种标志,最多4位大写ASCII英文字母,不足4位的其余位填0:
CNY:
人民币
privateintVer;//年版或版本号标志;人民币用作年版标志,值填0,1,2,分别代表1990,1999,2005三个年版,可根据实际情况扩充;其余币种填9999(表示不考虑年版);
privateintValuta;//币值,最大币值为50000
privateintCharNum;//冠字号码字符数,指明存储在数组SNo的号码个数;
privateStringSno;//存放识别的冠字号码,每个数组元素存放一位号码(ASCII字符),最多12位,不足12位的其余位填0;
privateStringMachineSno;//机具编号,必须为24位,每个数组元素存放一位ASCII字符,不足24位的其余位填0;
privateintReserve1;//保留字1
privateint