struct StringsBase *StringsBase=0L; /*#define RUN*/ #ifdef RUN long htol(s) char *s; { long al=0,l=0; char c; if(s) { do { c=*s++; l<<=4; if(c>58) c&=223; al=c-'0'; if(al>10) al-=7; l+=al; } while(*s); } return l; }; /* htol $VER 0.4 */ #endif long test(s) char *s; { char os[64]; long el=0,l; sprintf(os,"<%s>",s); l=htol(s); printf("%11s = %ld\n",os,l); return el; } int main() { /* MAIN */ long i,el=0; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); puts("htol"); i=test("0"); i=test("1"); i=test("FfffFFfF"); i=test("000000FF"); i=test("FFFFFF00"); i=test("0000FFFF"); i=test("FFFF0000"); i=test("0F0F0F0F"); i=test("F0F0F0F0"); i=test("7FFFFFFF"); i=test("80000000"); i=test("0000000C"); i=test("075BCD15"); i=test("12345678"); i=test("20"); i=test("f"); i=test("F"); i=test("4"); i=test("a0"); i=test("Ff"); i=test("40"); if(StringsBase) CloseLibrary(StringsBase); return el; } /* END */ /* htol <0> = 0 <1> = 1 = -1 <000000FF> = 255 = -256 <0000FFFF> = 65535 = -65536 <0F0F0F0F> = 252645135 = -252645136 <7FFFFFFF> = 2147483647 <80000000> = -2147483648 <0000000C> = 12 <075BCD15> = 123456789 <12345678> = 305419896 <20> = 32 = 15 = 15 <4> = 4 = 160 = 255 <40> = 64 */