B4J Code Snippet Random Hexcolor Generator

Ola...

I needed something like this... here we go...

B4X:
'generate a random hex color
Sub RandomHexColor As String
    Dim shex As StringBuilder
    shex.initialize
    shex.append("#")
   
    Dim hexValues As List
    hexValues.Initialize
    hexValues.AddAll(Array(0, 1 , 2 , 3 ,4 ,5 , 6 , 7 , 8 , 9, "A", "B", "C", "D", "E", "F"))
    '
    Dim i As Int
    For i = 0 To 5
        Dim idx As Int = Rnd(0, hexValues.Size)
        Dim hvalue As String = hexValues.Get(idx)
        shex.Append(hvalue)
    Next
    Return shex.tostring
End Sub

Update: Oops, fixed Rnd 2nd parameter to be (exclusive)
 
Last edited:

emexes

Expert
Licensed User
here we go...

In case the price of random numbers goes up:

B4X:
Sub RandomHexColor As String
    Return "#" & Bit.ToHexString(Rnd(0, 0x1000000)).ToUpperCase
End Sub

and if you really, really, really need six digits always, then perhaps the slightly kludgy:

B4X:
Sub RandomHexColor As String
    Return "#" & Bit.ToHexString(Rnd(0x1000000, 0x2000000)).SubString(1).ToUpperCase    'always generate 7 digits, then throw away the first one (pun intended)
End Sub
 
Last edited:

kimstudio

Active Member
Licensed User
Longtime User
Rnd(min, max) min inclusive and max exclusive, so I assume what emexes means is that it should be

B4X:
Dim idx As Int = Rnd(0, hexValues.Size)
 

kimstudio

Active Member
Licensed User
Longtime User
Only because I code algorithms sometimes then I know Rnd and I know almost nothing about your expertise web stuff.. so please no embarrassing at all
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…