# [Tutor] Hex to Str - still an open issue

Sandip Bhattacharya sandip at lug-delhi.org
Sun Feb 6 02:14:50 CET 2005

```Liam Clarke wrote:

> Sandip -
>
> Just looking at this -
> i = 456
> s = ''
> while i:
>     s = str(i % 2) + s
>     i/=2
>
> This works, far simpler than mine, which is always infuriating, but my
> question is, how exactly?
>
> if I have the number 15, when it divides by 2, it will become 7. Yet
> no error is introduced into the binary. Argggg. Driving me nuts trying
> to figure out how. I thought maybe a larger odd number would do it,
> but no.
>
> i = 320977545
> s = 10011001000011011101010001001
>
> Chuck that into ol' calc, and I get, 320977545.
>
> Can anyone shed some more light on this?

If you imagine the number being displayed in binary inside your calculator,

i % 2, gives us the rightmost bit of the number (has to be 0 or 1)

1/=2 just right shifts the number by one.

So if you consider 15,
a. i % 2 will give you "1".
b.  So even if 15/2 gives you 7, it is ok, as the odd bit has been taken
care of in (a).

- Sandip
```