### Author Topic: Hex To Decimal and Decimal to Hex  (Read 9139 times)

#### MrTAToad

• Guest
##### Hex To Decimal and Decimal to Hex
« on: 2009-Mar-04 »
No checking is done with the conversion from hex to decimal to make sure the passed string is a valid hex character.

Code: (glbasic) [Select]
`// --------------------------------- //// Project: HexADecimal// Start: Tuesday, March 03, 2009// IDE Version: 6.174DEBUG "Hex : "+decToHex\$(255,4)+"\n"DEBUG "Dec : "+hexToDec("FFFF")+"\n"ENDFUNCTION decToHex\$:value%,length%=4LOCAL digit%LOCAL temp%LOCAL result\$ IF length%<=0 RETURN "0" ENDIF result\$="" FOR digit%=length% TO 1 STEP -1 temp%=MOD(value%,16) IF temp%<10 result\$=CHR\$(temp%+48)+result\$ ELSE result\$=CHR\$((temp%-10)+65)+result\$ ENDIF value%=value%/16 NEXT RETURN result\$ENDFUNCTIONFUNCTION hexToDec%:hex\$LOCAL i%LOCAL j%LOCAL loop% i%=0 j%=0 FOR loop%=0 TO LEN(hex\$)-1 i%=ASC(MID\$(hex\$,loop%,1))-48 IF 9<i% DEC i%,7 ENDIF j%=j%*16 j%=bOR(j%,bAND(i,15)) NEXT RETURN jENDFUNCTION`

#### Kitty Hello

• code monkey
• Administrator
• Prof. Inline
• Posts: 10825
• here on my island the sea says 'hello'
##### Re: Hex To Decimal and Decimal to Hex
« Reply #1 on: 2009-Mar-04 »
Very nice!

#### MrTAToad

• Guest
##### Re: Hex To Decimal and Decimal to Hex
« Reply #2 on: 2009-Mar-04 »
Thanks!

#### ketil

• Mr. Polyvector
• Posts: 117
##### Re: Hex To Decimal and Decimal to Hex
« Reply #3 on: 2010-Jul-27 »
It's cool, but why not just go inline C and sprintf or something ?
"Sugar makes the world go 'round. Caffeine makes it spin faster."

#### Moru

• Administrator
• Prof. Inline
• Posts: 1791
##### Re: Hex To Decimal and Decimal to Hex
« Reply #4 on: 2010-Jul-27 »
Because that would exclude all GLBasic users that doesn't have the full package.

#### ketil

• Mr. Polyvector
• Posts: 117
##### Re: Hex To Decimal and Decimal to Hex
« Reply #5 on: 2010-Jul-27 »
Ahhh ... didn't think about that.
"Sugar makes the world go 'round. Caffeine makes it spin faster."

#### Qedo

• Dr. Type
• Posts: 359
• to program what I have do how should programming?
##### Re: Hex To Decimal and Decimal to Hex
« Reply #6 on: 2021-Mar-12 »
the old 2009 hexToDec function fails with value xFFFFFFFF because it returns value -1 instead of 4294967295.
This instead is the one that returns the correct value. For those who had used the old one please check
ad maiora

FUNCTION hexToDec#:_HEX\$
LOCAL i%=0
LOCAL j#=0
LOCAL loop%
_HEX\$=UCASE\$(_HEX\$)
LOCAL start%=LEN(_HEX\$)-1
FOR loop%=start TO 0 STEP-1
i=ASC(MID\$(_HEX\$,loop,1))-48   //0=48 A=65
IF i>9
DEC i,7
ENDIF
j=j+i*POW(16,start-loop)
NEXT
RETURN j
ENDFUNCTION

#### Kitty Hello

• code monkey
• Administrator
• Prof. Inline
• Posts: 10825
• here on my island the sea says 'hello'
##### Re: Hex To Decimal and Decimal to Hex
« Reply #7 on: 2021-Mar-13 »
There is a builtins HEX\$(), are you aware of that?

#### Qedo

• Dr. Type
• Posts: 359
• to program what I have do how should programming?
##### Re: Hex To Decimal and Decimal to Hex
« Reply #8 on: 2021-Mar-13 »
HEX\$() ? I thought it only transforms from decimal to hexadecimal.
Or am I wrong?
I need the opposite. HEX2DEC

#### Kitty Hello

• code monkey
• Administrator
• Prof. Inline
• Posts: 10825
• here on my island the sea says 'hello'
##### Re: Hex To Decimal and Decimal to Hex
« Reply #9 on: 2021-Mar-15 »
Ah. Try this:
Code: (glbasic) [Select]
`IMPORT "C" int strtol(const char* str, int endptr, int base)LOCAL str\$ = "ff"LOCAL n% = strtol(str\$, 0, 16)`

#### Qedo

• Dr. Type
• Posts: 359
• to program what I have do how should programming?
##### Re: Hex To Decimal and Decimal to Hex
« Reply #10 on: 2021-Mar-20 »
Thanks Gernot for the great help  , However for high hex, like 0xFFFFFFFF the strtol function overflows. It seems to be better strtoul.
ad maiora

a#=hex2dec("F234FFF0")
PRINT a,0,0
SHOWSCREEN
MOUSEWAIT
END

IMPORT "C" unsigned long strtoul(const char* str, int endptr, int base)
FUNCTION hex2dec#: str\$
LOCAL n# = strtoul(str\$, 0, 16)
RETURN n
ENDFUNCTION