Convert hex string to bigint in Postgres
11,385
An easy way is:
select ('x'||lpad(the_hex_value,16,'0'))::bit(64)::bigint;
The left padding with 0 is necessary because the leftmost bit is always going to be interpreted as the sign bit.
Also keep in mind that bigint
is signed, postgres doesn't have built-in unsigned types.
Author by
simone
Updated on July 15, 2022Comments
-
simone almost 2 years
I'd like to convert a hex string as used by HTML into a
bigint
to then convert it into separate R, G and B values in Postgres via a function written in PL/pgSQL.I can decode the string into
bytea
like this:hex bytea := decode(hex, 'hex');
And in a query with fixed values this works like a beauty:
select ( array[ (cast(x'ffaa33' as bigint) >> 16) % 256, (cast(x'ffaa33' as bigint) >> 8) % 256, cast(x'ffaa33' as bigint) % 256 ] )
But I can't put the two together, passing - for example 'ffaa33' as parameter.
Anyone got a better idea? I'm using PosgreSQL 9.1?
-
Cherven over 8 yearsthanks Daniel. How to do bigint to hex?
-
Daniel Vérité over 8 years@Cherven: postgres has a builtin
to_hex(bigint)
function