473,473 Members | 1,549 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

integer to binary...

does anyone know a module or something to convert numbers like integer
to binary format ?

for example I want to convert number 7 to 0111 so I can make some
bitwise operations...

Thanks

Jun 1 '06 #1
21 3795
ni******@gmail.com schrieb:
does anyone know a module or something to convert numbers like integer
to binary format ?
unfortunately there is no builtin function for this
int("111",2) 7 str(7) '7' str(7,2) Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: str() takes at most 1 argument (2 given)


int, str are not symmetrical
I hope this will change in future

<rebel on>

you can use Ruby's 7.to_s(2) for this
irb(main):001:0> 7.to_s(2)
=> "111"
irb(main):002:0> 7.to_s(3)
=> "21"
irb(main):003:0>

</rebel on>
for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


you can use bitwise operations on int's anyway

7 & 3 == 3
(1 << 20) | (1 << 10) == 2**20+2**10

and so on
Jun 1 '06 #2
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?
They _are_ in binary format.
for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


Just do it:
7 & 3 3 7 | 8

15
--
Grant Edwards grante Yow! QUIET!! I'm being
at CREATIVE!! Is it GREAT
visi.com yet? It's s'posed to SMOKEY
THE BEAR...
Jun 1 '06 #3
En/na ni******@gmail.com ha escrit:
does anyone know a module or something to convert numbers like integer
to binary format ?
http://www.google.es/search?q=python+integer+to+binary

http://aspn.activestate.com/ASPN/Coo.../Recipe/219300
for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


python already provides some bitwise operators:

http://docs.python.org/ref/summary.html

HTH
Jun 1 '06 #4

Grant Edwards wrote:
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?
They _are_ in binary format.
for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


Just do it:
7 & 3 3 7 | 8

15
--

I know I can do that but I need to operate in every bit separeted. Grant Edwards grante Yow! QUIET!! I'm being
at CREATIVE!! Is it GREAT
visi.com yet? It's s'posed to SMOKEY
THE BEAR...


Jun 1 '06 #5
ni******@gmail.com wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?

for example I want to convert number 7 to 0111 so I can make some
bitwise operations...

def bits(i,n): return tuple((0,1)[i>>j & 1] for j in xrange(n-1,-1,-1))
bits(7,4)

(0, 1, 1, 1)

Anton
Jun 1 '06 #6

ni******@gmail.com wrote:
Grant Edwards wrote:
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?


They _are_ in binary format.
for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


Just do it:
>> 7 & 3

3
>> 7 | 8

15

this is exactly what I need ->
http://www.daniweb.com/code/snippet285.html

thanks. --

I know I can do that but I need to operate in every bit separeted.
Grant Edwards grante Yow! QUIET!! I'm being
at CREATIVE!! Is it GREAT
visi.com yet? It's s'posed to SMOKEY
THE BEAR...


Jun 1 '06 #7
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:
does anyone know a module or something to convert numbers like
integer to binary format ?


They _are_ in binary format.
> for example I want to convert number 7 to 0111 so I can make some
> bitwise operations...


Just do it:
>>> 7 & 3

3
>>> 7 | 8

15


I know I can do that but I need to operate in every bit separeted.


Sorry, I've no clue what that means.

--
Grant Edwards grante Yow! Now KEN is having
at a MENTAL CRISIS beacuse
visi.com his "R.V." PAYMENTS are
OVER-DUE!!
Jun 1 '06 #8
>>> for example I want to convert number 7 to 0111 so I can make some
bitwise operations...

Just do it:
> 7 & 3

3
> 7 | 8

15

I know I can do that but I need to operate in every bit separeted.

I suppose there might be other operations for which having them
as strings could be handy. E.g. counting bits:

bitCount = len([c for c in "01001010101" if c=="1"])

or parity checking with those counted bits...sure, it can be done
with the raw stuff, but the operations often tend to be more obscure.

Other reasons for wanting an arbitrary integer in binary might be
for plain-old-display, especially if it represents bitmap data.

If you just want to operate on each bit, you can iterate over the
number of bits and shift a single bit to its position:
target = 10
shift = 0
while 1 << shift <= target:

.... print "Bit %i is %i" % (shift,
.... (target & (1 << shift)) >> shift)
.... shift += 1
....
Bit 0 is 0
Bit 1 is 1
Bit 2 is 0
Bit 3 is 1
It's ugly, but it works...

-tkc

Jun 1 '06 #9
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?

They _are_ in binary format.

for example I want to convert number 7 to 0111 so I can make
some bitwise operations...

Just do it:

>>> 7 & 3
3
>>> 7 | 8
15

this is exactly what I need -> http://www.daniweb.com/code/snippet285.html


That's nice, but I don't register at web sites like that.
I know I can do that but I need to operate in every bit
separeted.


I still don't get what you want a binary string for.

I can see wanting a sequence (e.g. array) of boolean values,
but how are you going to do bitwise operations on a binary
string?

--
Grant Edwards grante Yow! .. I think I'd
at better go back to my DESK
visi.com and toy with a few common
MISAPPREHENSIONS...
Jun 1 '06 #10
On 2006-06-01, Tim Chase <py*********@tim.thechases.com> wrote:
for example I want to convert number 7 to 0111 so I can make some
bitwise operations...
Just do it:

>> 7 & 3
3
>> 7 | 8
15 I know I can do that but I need to operate in every bit separeted.

I suppose there might be other operations for which having them
as strings could be handy. E.g. counting bits:

bitCount = len([c for c in "01001010101" if c=="1"])

or parity checking with those counted bits...sure, it can be done
with the raw stuff, but the operations often tend to be more obscure.


I would think an array or list of bits would be a lot more
useful for doing "bitwise operations":

bitCount = sum([0,1,0,0,1,0,1,0,1,0,1])
parity = reduce(operator.xor,[0,1,0,0,1,0,1,0,1,0,1])
Other reasons for wanting an arbitrary integer in binary might be
for plain-old-display, especially if it represents bitmap data.


Yes. I thought C should have had a %b format since the
beginning, but nobody listens. But that's not
what the OP said he wanted it for.

--
Grant Edwards grante Yow! Now I'm concentrating
at on a specific tank battle
visi.com toward the end of World
War II!
Jun 1 '06 #11

ni******@gmail.com wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?

for example I want to convert number 7 to 0111 so I can make some
bitwise operations...

Thanks


Use the gmpy module.
import gmpy
a = 14
b = 7
c = 8 help(gmpy.digits) Help on built-in function digits:

digits(...)
digits(x[,base]): returns Python string representing x in the
given base (2 to 36, default 10 if omitted or 0); leading '-'
present if x<0, but no leading '+' if x>=0. x must be an mpz,
or else gets coerced into one.
print gmpy.digits(a,2) 1110 print gmpy.digits(b,2) 111 print gmpy.digits(c,2) 1000

help(gmpy.setbit) Help on built-in function setbit:

setbit(...)
setbit(x,n,v=1): returns a copy of the value of x, with bit n set
to value v; n must be an ordinary Python int, >=0; v, 0 or !=0;
x must be an mpz, or else gets coerced to one.
d = gmpy.setbit(c,1,1)
print gmpy.digits(d,2) 1010
help(gmpy.scan1) Help on built-in function scan1:

scan1(...)
scan1(x, n=0): returns the bit-index of the first 1-bit of x (that
is at least n); n must be an ordinary Python int, >=0. If no more
1-bits are in x at or above bit-index n (which can only happen for
x>=0, notionally extended with infinite 0-bits), None is returned.
x must be an mpz, or else gets coerced to one.
help(gmpy.scan0) Help on built-in function scan0:

scan0(...)
scan0(x, n=0): returns the bit-index of the first 0-bit of x (that
is at least n); n must be an ordinary Python int, >=0. If no more
0-bits are in x at or above bit-index n (which can only happen for
x<0, notionally extended with infinite 1-bits), None is returned.
x must be an mpz, or else gets coerced to one.
print gmpy.scan1(a) 1 print gmpy.scan1(b) 0 print gmpy.scan1(c) 3 print gmpy.scan1(d) 1 print gmpy.scan0(a) 0 print gmpy.scan0(b) 3 print gmpy.scan0(c) 0 print gmpy.scan0(d) 0
help(gmpy.popcount) Help on built-in function popcount:

popcount(...)
popcount(x): returns the number of 1-bits set in x; note that
this is 'infinite' if x<0, and in that case, -1 is returned.
x must be an mpz, or else gets coerced to one.
print gmpy.popcount(a) 3 print gmpy.popcount(b) 3 print gmpy.popcount(c) 1 print gmpy.popcount(d) 2

help(gmpy.hamdist) Help on built-in function hamdist:

hamdist(...)
hamdist(x,y): returns the Hamming distance (number of bit-positions
where the bits differ) between x and y. x and y must be mpz, or
else
get coerced to mpz.
print gmpy.hamdist(a,b) 2 print gmpy.hamdist(a,c) 2 print gmpy.hamdist(a,d) 1 print gmpy.hamdist(b,c) 4 print gmpy.hamdist(b,d) 3 print gmpy.hamdist(c,d)

1

Jun 1 '06 #12
me********@aol.com wrote:
ni******@gmail.com wrote:
does anyone know a module or something to convert numbers like integer
to binary format ?

for example I want to convert number 7 to 0111 so I can make some
bitwise operations...

Thanks

Use the gmpy module.

import gmpy
a = 14
b = 7
c = 8
help(gmpy.digits)
Help on built-in function digits:

digits(...)
digits(x[,base]): returns Python string representing x in the
given base (2 to 36, default 10 if omitted or 0); leading '-'
present if x<0, but no leading '+' if x>=0. x must be an mpz,
or else gets coerced into one.

print gmpy.digits(a,2)
1110
print gmpy.digits(b,2)
111
print gmpy.digits(c,2)
1000
help(gmpy.setbit)
Help on built-in function setbit:

setbit(...)
setbit(x,n,v=1): returns a copy of the value of x, with bit n set
to value v; n must be an ordinary Python int, >=0; v, 0 or !=0;
x must be an mpz, or else gets coerced to one.

d = gmpy.setbit(c,1,1)
print gmpy.digits(d,2)
1010

help(gmpy.scan1)
Help on built-in function scan1:

scan1(...)
scan1(x, n=0): returns the bit-index of the first 1-bit of x (that
is at least n); n must be an ordinary Python int, >=0. If no more
1-bits are in x at or above bit-index n (which can only happen for
x>=0, notionally extended with infinite 0-bits), None is returned.
x must be an mpz, or else gets coerced to one.

help(gmpy.scan0)
Help on built-in function scan0:

scan0(...)
scan0(x, n=0): returns the bit-index of the first 0-bit of x (that
is at least n); n must be an ordinary Python int, >=0. If no more
0-bits are in x at or above bit-index n (which can only happen for
x<0, notionally extended with infinite 1-bits), None is returned.
x must be an mpz, or else gets coerced to one.

print gmpy.scan1(a)
1
print gmpy.scan1(b)
0
print gmpy.scan1(c)
3
print gmpy.scan1(d)
1
print gmpy.scan0(a)
0
print gmpy.scan0(b)
3
print gmpy.scan0(c)
0
print gmpy.scan0(d)
0

help(gmpy.popcount)
Help on built-in function popcount:

popcount(...)
popcount(x): returns the number of 1-bits set in x; note that
this is 'infinite' if x<0, and in that case, -1 is returned.
x must be an mpz, or else gets coerced to one.

print gmpy.popcount(a)
3
print gmpy.popcount(b)
3
print gmpy.popcount(c)
1
print gmpy.popcount(d)
2
help(gmpy.hamdist)
Help on built-in function hamdist:

hamdist(...)
hamdist(x,y): returns the Hamming distance (number of bit-positions
where the bits differ) between x and y. x and y must be mpz, or
else
get coerced to mpz.

print gmpy.hamdist(a,b)
2
print gmpy.hamdist(a,c)
2
print gmpy.hamdist(a,d)
1
print gmpy.hamdist(b,c)
4
print gmpy.hamdist(b,d)
3
print gmpy.hamdist(c,d)


1

For those digging deeper into this subject who are looking for speed,
reading the past discussion on this newsgroup I was part of myself
looking for fastest way of such integer to binary conversion can maybe
be of interest:
http://mail.python.org/pipermail/pyt...ry/319295.html
(includes full source code of all compared approaches)

Claudio
Jun 2 '06 #13
me********@aol.com wrote:
Use the gmpy module.


Yes, it's good. :)
Jun 2 '06 #14
Tim Chase <py*********@tim.thechases.com> wrote:
bitCount = len([c for c in "01001010101" if c=="1"])


bitCount = "01001010101".count("1")

--
\S -- si***@chiark.greenend.org.uk -- http://www.chaos.org.uk/~sion/
___ | "Frankly I have no feelings towards penguins one way or the other"
\X/ | -- Arthur C. Clarke
her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
Jun 2 '06 #15
ni******@gmail.com a écrit :
does anyone know a module or something to convert numbers like integer
to binary format ?

for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


You don't need to convert anything. The bitwise ops are &, |, <<, >>

0 | 2 | 4
-> 6
6 & 2
-> 2
2 << 4
-> 32
8 >> 1
-> 4
Jun 2 '06 #16
Grant Edwards a écrit :
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:

does anyone know a module or something to convert numbers like integer
to binary format ?

They _are_ in binary format.


Not really.
(7).__class__ <type 'int'> dir((7)) ['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__',
'__delattr__', '__div__', '__divmod__', '__doc__', '__float__',
'__floordiv__', '__getattribute__', '__getnewargs__', '__hash__',
'__hex__', '__init__', '__int__', '__invert__', '__long__',
'__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__',
'__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__',
'__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__',
'__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__',
'__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__',
'__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']

Jun 2 '06 #17
ni******@gmail.com a écrit :
Grant Edwards wrote:
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:

does anyone know a module or something to convert numbers like integer
to binary format ?


They _are_ in binary format.

for example I want to convert number 7 to 0111 so I can make some
bitwise operations...


Just do it:

>7 & 3


3
>7 | 8


15
--


I know I can do that but I need to operate in every bit separeted.


Could you explain the difference ?
Jun 2 '06 #18
On 2006-06-02, Bruno Desthuilliers <bd*****************@free.quelquepart.fr> wrote:
Grant Edwards a écrit :
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:

does anyone know a module or something to convert numbers like integer
to binary format ?

They _are_ in binary format.


Not really.


Yes, really. Otherwise the bitwise boolean operations you
demonstrated wouldn't work as shown.
(7).__class__<type 'int'> dir((7)) ['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__',
'__delattr__', '__div__', '__divmod__', '__doc__', '__float__',
'__floordiv__', '__getattribute__', '__getnewargs__', '__hash__',
'__hex__', '__init__', '__int__', '__invert__', '__long__',
'__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__',
'__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__',
'__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__',
'__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__',
'__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__',
'__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']


The fact that they impliment the xor operator is pretty much
proof that integers are stored in binary format -- xor is only
defined for binary numbers.

--
Grant Edwards grante Yow! ... Blame it on the
at BOSSA NOVA!!!
visi.com
Jun 3 '06 #19
> The fact that they impliment the xor operator is pretty much
proof that integers are stored in binary format -- xor is only
defined for binary numbers.


Um...let's not use bad logic/proofs for evidencing this...
hasattr(set(), "__xor__")

True

:)

-tkc

Jun 3 '06 #20
On 2006-06-03, Tim Chase <py*********@tim.thechases.com> wrote:
The fact that they impliment the xor operator is pretty much
proof that integers are stored in binary format -- xor is only
defined for binary numbers.


Um...let's not use bad logic/proofs for evidencing this...
hasattr(set(), "__xor__")

True


Sets aren't numbers. Perhaps I should have phrased it better:
xor is only defined for numbers if they are represented in
binary. If numbers were represented in something other than
binary, then an xor operation on those numbers wouldn't make
sense.

--
Grant Edwards grante Yow! .. I want to perform
at cranial activities with
visi.com Tuesday Weld!!
Jun 3 '06 #21
Grant Edwards a écrit :
On 2006-06-02, Bruno Desthuilliers <bd*****************@free.quelquepart.fr> wrote:
Grant Edwards a écrit :
On 2006-06-01, ni******@gmail.com <ni******@gmail.com> wrote:

does anyone know a module or something to convert numbers like integer
to binary format ?

They _are_ in binary format.
Not really.


Yes, really.


No, not really.
Otherwise the bitwise boolean operations you
demonstrated wouldn't work as shown.
Ho yes ?
>(7).__class__
<type 'int'>
>dir((7))


['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__',
'__delattr__', '__div__', '__divmod__', '__doc__', '__float__',
'__floordiv__', '__getattribute__', '__getnewargs__', '__hash__',
'__hex__', '__init__', '__int__', '__invert__', '__long__',
'__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__',
'__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__',
'__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__',
'__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__',
'__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__',
'__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']


The fact that they impliment the xor operator is pretty much
proof that integers are


.... objects, instance of the int class. Not really what I'd call "binary
format" !-)

Now if you go that way, it's of course true that everything on a
computer ends up in a binary format.... It's true.
stored in binary format -- xor is only
defined for binary numbers.

class Prisonner(object):
def __xor__(self, other):
return "I'm not a (binary) number, I'm a free man"

The fact that an object implements the xor operator is pretty much proof
that the guy that wrote the class decided to implement the xor operator !-)

Grant, I of course agree that, *for practical means*, one can consider
that Python's integer are "already in binary format" - for a definition
of "binary format" being "you can do bitwise ops on them". But the truth
is that Python integers are objects (in the OO meaning) holding integer
values - not integer values themselves.
Jun 4 '06 #22

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: David Lawson | last post by:
I know how to conver a string to an array of strings, but I need to convert an ascii string to an array of integers (really unsigned chars). Eg, $str ="ABC"; needs to convert to something...
0
by: Mark Dufour | last post by:
Hi all, I need to convert an integer into some binary representation. I found the following code in the online cookbook (adapted to return a list): binary = lambda n: n>0 and +binary(n>>1) or ...
6
by: Andrew | last post by:
Hi I have a question is there a function in C++ to convert an integer into a Binary number Thanks in Advance Cheers
17
by: Mantorok Redgormor | last post by:
are all integers represented internally as just bit vectors? -- nethlek
20
by: GS | last post by:
The stdint.h header definition mentions five integer categories, 1) exact width, eg., int32_t 2) at least as wide as, eg., int_least32_t 3) as fast as possible but at least as wide as, eg.,...
5
by: sathyashrayan | last post by:
Group, I have some doubts in the following program. ------------------program--------------------- /* ** Make an ascii binary string into an integer. */ #include <string.h> unsigned int...
3
by: shyha | last post by:
Hello! Does anybody know what is binary representation of integer datatype fields written to archlogs on z/OS (OS/390) machines? Is it "Two's complement", "One's complement", Sign-modulo or...
3
by: David | last post by:
If I have a loop that has a max value of say 20 why would I not want to define the loop counter using a BYTE or SHORT as opposed to a INTEGER. It seems in most books or samples they define...
14
by: Default User | last post by:
Hi, If I have three 64 bit integers and I want to do this operation on them: x*y/z Lets say that what we are multiplying by (y) is offset by what we are dividing by (z) so that the final...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.