00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef READTYPES_H
00011 #define READTYPES_H
00012 #include <string>
00013 #include <sstream>
00014 #include "typedefs.h"
00015 #include "i18n.h"
00016
00017 string fixedString(iter start, int length){
00018 ostringstream o;
00019 int lastchar = length - 1;
00020 for(; lastchar; --lastchar) if(start[lastchar] > 0x20) break;
00021 for(int j = 0; j <= lastchar ; ++j) if(start[j] >= 0x20 && start[j] != 0xFF) o << latin1tounicode(start[j]);
00022 return o.str();
00023 }
00024
00025 int BEInt16(iter start){
00026 return (start[0] << 8)+ start[1];
00027 }
00028 int BEInt32(iter start){
00029 return (start[0] << 24) + (start[1] << 16) + (start[2] << 8) + start[3];
00030 }
00031 int BEInt24(iter start){
00032 return (start[0] << 16) + (start[1] << 8) + start[2];
00033 }
00034 string bcdbyte(unsigned char start){
00035 char rv[3];
00036 rv[0] = '0' + (start >> 4);
00037 rv[1] = '0' + (start & 0xF);
00038 rv[2] = 0;
00039 return rv;
00040 }
00041 string BCDDate(iter start){
00042 return bcdbyte(start[0]) + bcdbyte(start[1]) + "-" + bcdbyte(start[2]) + "-" + bcdbyte(start[3]);
00043 }
00044
00045 int LEInt32(iter start){
00046 return (start[3] << 24) + (start[2] << 16) + (start[1] << 8) + start[0];
00047 }
00048
00049 #endif