Convert Int to Hex?

Is there a simple way to convert an integer to hex in Brightscript?

For example, given 255 it would return FF (or some similar form, e.g. 0xFF, 0x0000FF, etc.)

Easiest way, I think, is to go through a byte array.

The following is based on the excellent libRokuDev project, from the file rdByteArray.brs
I’ve modified it to run faster, test before using


 ' * Convert an integer to a hex string *
function ConvertINTtoHEX(num as integer) as string
	return rdINTtoBA(num).toHexString()
end function

' * Convert an integer to a (4 byte) roByteArray *
function fastINTtoBA(num as integer) as object
	ba = CreateObject("roByteArray")
	ba.setresize(4, false)

	i% = num
	ba[3] = i%
	i% = i% / 256 : ba[2] = i% ' using % auto converts float from division to int
	i% = i% / 256 : ba[1] = i% ' then assigning to bytes auto truncates (AND &h0ff)
	i% = i% / 256 : ba[0] = i%
	return ba
end function

Here’s another way:


function decToHex (dec as integer) as string
	hexTab = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
	hex = ""
	while dec > 0
		hex = hexTab [dec mod 16] + hex
		dec = dec / 16
	end while
	if hex = "" return "0" else return hex
end function

“MSGreg” wrote:
Easiest way, I think, is to go through a byte array.

Me too

BrightScript Debugger> ba = CreateObject("roByteArray"):ba.push(255):?ba.toHexString()
FF

Troy

Great! Thanks for the answers AND for introducing me to libRokuDev!

Function addOpacityToHexColor(color as String, opacity as float) as String
    opacityHex = StrI(Cint(opacity * 255), 16) ' Converting Float / Integer to Hex

    return "#" + color + opacityHex
End Function