Thread: Converting integer to binary

Converting integer to binary

From
Stephen Quinney
Date:
I have searched around but I cannot see any standard way in PostgreSQL
to convert from an integer into a binary representation.

i.e. I want to do:

16 ==> 10000
32 ==> 100000
64 ==> 1000000
96 ==> 1100000

etc..

Now I have an algorithm to do it so I could write an SQL function, I
guess. If there's a standard way to do it though that would be quite nice.

Thanks in advance,

Stephen Quinney



Re: Converting integer to binary

From
Bruno Wolff III
Date:
On Thu, Jun 10, 2004 at 14:52:41 +0100, Stephen Quinney <stephen.quinney@computing-services.oxford.ac.uk> wrote:
> 
> I have searched around but I cannot see any standard way in PostgreSQL
> to convert from an integer into a binary representation.
> 
> Now I have an algorithm to do it so I could write an SQL function, I
> guess. If there's a standard way to do it though that would be quite nice.

There doesn't seem to currently be a function that does this. to_char
would be the logical place since that is what is used to convert various
numeric types to strings with a decimal representation.


Re: Converting integer to binary

From
Chris Gamache
Date:
Once upon a time in PostgreSQL there was a function : bitfromint4 ... Any idea
where it has disappeared to?

You can do

# select B'10101101'::int4;int4
------ 173
(1 row)

but you want to go

# select 173::varbit;

which is what bitfromint4 used to do.

CG

--- Bruno Wolff III <bruno@wolff.to> wrote:
> On Thu, Jun 10, 2004 at 14:52:41 +0100,
>   Stephen Quinney <stephen.quinney@computing-services.oxford.ac.uk> wrote:
> > 
> > I have searched around but I cannot see any standard way in PostgreSQL
> > to convert from an integer into a binary representation.
> > 
> > Now I have an algorithm to do it so I could write an SQL function, I
> > guess. If there's a standard way to do it though that would be quite nice.
> 
> There doesn't seem to currently be a function that does this. to_char
> would be the logical place since that is what is used to convert various
> numeric types to strings with a decimal representation.
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster


    
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 


Re: Converting integer to binary

From
Bruno Wolff III
Date:
On Thu, Jun 10, 2004 at 13:24:15 -0700, Chris Gamache <cgg007@yahoo.com> wrote:

Following up on the cast to bit idea, he could do something like
casting to bit(32). I don't think there is an easy way to get this
cast to string, so it may not completely solve his problem, depending
on what he was going to do with the binary representation. On teh other
hand, for some things a bit field might be more useful than a string.

area=> select 6::bit(32);              bit
----------------------------------00000000000000000000000000000110
(1 row)



Re: Converting integer to binary

From
Stephen Quinney
Date:
On Thu, Jun 10, 2004 at 05:27:31PM -0500, Bruno Wolff III wrote:
> On Thu, Jun 10, 2004 at 13:24:15 -0700,
>   Chris Gamache <cgg007@yahoo.com> wrote:
> 
> Following up on the cast to bit idea, he could do something like
> casting to bit(32). I don't think there is an easy way to get this
> cast to string, so it may not completely solve his problem, depending
> on what he was going to do with the binary representation. On teh other
> hand, for some things a bit field might be more useful than a string.
> 
> area=> select 6::bit(32);
>                bit
> ----------------------------------
>  00000000000000000000000000000110
> (1 row)

That would probably work for me in this case as I am interfacing to
postgresql via the Perl DBI layer. With perl reading out that field
would give me a string representation.

Thanks for the tips,

Stephen Quinney