/* * $Id$ */ /* Harbour Project source code Convertion Funtions Copyright (C) 1999 Luiz Rafael Culik www - http://www.harbour-project.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version, with one exception: The exception is that if you link the Harbour Runtime Library (HRL) and/or the Harbour Virtual Machine (HVM) with other files to produce an executable, this does not by itself cause the resulting executable to be covered by the GNU General Public License. Your use of that executable is in no way restricted on account of linking the HRL and/or HVM code into it. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit their web site at http://www.gnu.org/). */ /* $DOC$ * $FUNCNAME$ * ISBIN() * * $CATEGORY$ * Conversion * $ONELINER$ * Check if the value is a Binary Number * $SYNTAX$ * ISBIN() -> * * $ARGUMENTS$ * STRING TO BE CHECKED * $RETURNS$ * * ^b .T.^b IF THE STRING IS BYNARY * ^b .F.^b^ IF NOT * $DESCRIPTION$ * ^b check if the passed string is a bynary number or not * $EXAMPLES$ * * $SEEALSO$ * ISOCTAL() ISDEC() ISHEXA() * $INCLUDE$ * * $END$ */ FUNCTION IsBin(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) IF !(SubStr(cString,nX,1) $"01") lFlag:=.F. EXIT ENDIF NEXT nX RETURN(lFlag) /* $DOC$ * $FUNCNAME$ * ISOCTAL() * * $CATEGORY$ * Conversion * $ONELINER$ * Check if the value is a Octal Number * $SYNTAX$ * ISOCTAL() -> * * $ARGUMENTS$ * STRING TO BE CHECKED * $RETURNS$ * * ^b .T.^b IF THE STRING IS OCTAL * ^b .F.^b^ IF NOT * * $DESCRIPTION$ * ^b check if the passed string is a octal number or not * $EXAMPLES$ * * $SEEALSO$ * ISBIN() ISDEC() ISHEXA() * $INCLUDE$ * * $END$ */ FUNCTION IsOctal(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) if !(SubStr(cString,nX,1) $"01234567") lFlag:=.f. EXIT ENDIF NEXT nX RETURN(lFlag) /* $DOC$ * $FUNCNAME$ * ISDEC() * * $CATEGORY$ * Conversion * $ONELINER$ * Check if the value is a Decimal Number * $SYNTAX$ * ISDEC() -> * * $ARGUMENTS$ * STRING TO BE CHECKED * $RETURNS$ * ^b .T.^b IF THE STRING IS DECIMAL * ^b .F.^b^ IF NOT * $DESCRIPTION$ * ^b check if the passed string is a decimal number or not * $EXAMPLES$ * * $SEEALSO$ * ISOCTAL() ISBIN() ISHEXA() * $INCLUDE$ * * $END$ */ FUNCTION IsDec(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) if !(SubStr(cString,nX,1) $"0123456789") lFlag:=.f. EXIT ENDIF NEXT nX RETURN(lFlag) /* $DOC$ * $FUNCNAME$ * ISHEXA() * * $CATEGORY$ * Conversion * $ONELINER$ * Check if the value is a Hexal Number * $SYNTAX$ * ISHEXA() -> * * $ARGUMENTS$ * STRING TO BE CHECKED * $RETURNS$ * ^b .T.^b IF THE STRING IS HEXA * ^b .F.^b^ IF NOT * $DESCRIPTION$ * ^b check if the passed string is a hexa number or not * $EXAMPLES$ * * $SEEALSO$ * ISOCTAL() ISDEC() ISBIN() * $INCLUDE$ * * $END$ */ FUNCTION IsHexa(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) if !(SubStr(cString,nX,1) $"0123456789ABCDEF") lFlag:=.f. EXIT ENDIF NEXT nX RETURN(lFlag) /* $DOC$ * $FUNCNAME$ * DECTOBIN() * * $CATEGORY$ * Conversion * $ONELINER$ * Converts a Decimal Value to Binary * $SYNTAX$ * DECTOBIN() -> * * $ARGUMENTS$ * NUMBER TO BE CONVERTED * $RETURNS$ * NUMBER CONVERTED * $DESCRIPTION$ * * $EXAMPLES$ * * $SEEALSO$ * * $INCLUDE$ * * $END$ */ FUNCTION DecToBin(nNumber) local cNewString:='' local nTemp:=0 WHILE(nNumber > 0) nTemp:=(nNumber%2) cNewString:=SubStr('01',(nTemp+1),1)+cNewString nNumber:=Int((nNumber-nTemp)/2) ENDDO RETURN(cNewString) /* $DOC$ * $FUNCNAME$ * DECTOOCTAL() * * $CATEGORY$ * Conversion * $ONELINER$ * Converts a Decimal Value to Octal * $SYNTAX$ * DECTOOCTAL() -> * * $ARGUMENTS$ * NUMBER TO BE CONVERTED * $RETURNS$ * NUMBER CONVERTED * $DESCRIPTION$ * * $EXAMPLES$ * * $SEEALSO$ * * $INCLUDE$ * * $EnNumber$ */ FUNCTION DecToOctal(nNumber) local cNewString:='' local nTemp:=0 WHILE(nNumber > 0) nTemp:=(nNumber%8) cNewString:=SubStr('01234567',(nTemp+1),1)+cNewString nNumber:=Int((nNumber-nTemp)/8) ENDDO RETURN(cNewString) /* $DOC$ * $FUNCNAME$ * DECTOHEXA() * * $CATEGORY$ * Conversion * $ONELINER$ * Converts a Decimal Value to Hexa * $SYNTAX$ * DECTOHEXA() -> * * $ARGUMENTS$ * NUMBER TO BE CONVERTED * $RETURNS$ * NUMBER CONVERTED * $DESCRIPTION$ * * $EXAMPLES$ * * $SEEALSO$ * * $INCLUDE$ * * $EnNumber$ */ FUNCTION DecToHexa(nNumber) local cNewString:='' local nTemp:=0 WHILE(nNumber > 0) nTemp:=(nNumber%16) cNewString:=SubStr('0123456789ABCDEF',(nTemp+1),1)+cNewString nNumber:=Int((nNumber-nTemp)/16) ENDDO RETURN(cNewString) /* $DOC$ * $FUNCNAME$ * BIntODEC() * * $CATEGORY$ * Conversion * $ONELINER$ * Converts a Binary Value to Decimal * $SYNTAX$ * BIntODEC() -> * * $ARGUMENTS$ * NUMBER TO BE CONVERTED * $RETURNS$ * NUMBER CONVERTED * $DESCRIPTION$ * * $EXAMPLES$ * * $SEEALSO$ * * $INCLUDE$ * * $EnNumber$ */ FUNCTION BinToDec(cString) local nNumber:=0,nX:=0 local cNewString:=AllTrim(cString) local nLen:=Len(cNewString) FOR nX:=1 to nLen nNumber+=(At(SubStr(cNewString,nX,1),'01')-1)*; (2**(nLen-nX)) NEXT nX RETURN(nNumber) /* $DOC$ * $FUNCNAME$ * OCTALTODEC() * * $CATEGORY$ * Conversion * $ONELINER$ * Converts a Octal Value to Decimal * $SYNTAX$ * OCTALTODEC() -> * * $ARGUMENTS$ * NUMBER TO BE CONVERTED * $RETURNS$ * NUMBER CONVERTED * $DESCRIPTION$ * * $EXAMPLES$ * * $SEEALSO$ * * $INCLUDE$ * * $EnNumber$ */ FUNCTION OctalToDec(cString) local nNumber:=0,nX:=0 local cNewString:=AllTrim(cString) local nLen:=Len(cNewString) FOR nX:=1 to nLen nNumber+=(At(SubStr(cNewString,nX,1),'01234567')-1)*; (8**(nLen-nX)) NEXT nX RETURN(nNumber) /* $DOC$ * $FUNCNAME$ * HEXATODEC() * $CATEGORY$ * Conversion * $ONELINER$ * Converts a Hexa Value to Decimal * $SYNTAX$ * HEXATODEC() -> * * $ARGUMENTS$ * NUMBER TO BE CONVERTED * $RETURNS$ * NUMBER CONVERTED * $DESCRIPTION$ * * $EXAMPLES$ * * $SEEALSO$ * * $INCLUDE$ * * $EnNumber$ */ FUNCTION HexaToDec(cString) local nNumber:=0,nX:=0 local cNewString:=AllTrim(cString) local nLen:=Len(cNewString) FOR nX:=1 to nLen nNumber+=(At(SubStr(cNewString,nX,1),'0123456789ABCDEF')-1)*; (16**(nLen-nX)) NEXT nX RETURN nNumber * EOF: NCONVERT.PRG