Ask Your Question
1

How to convert an integer to fixed length binary string in Sage?

asked 2018-10-11 08:20:46 -0600

I want to get

(192,14,100)=>8bit binary of 192 || 8bit binary of 14 ||8bit binary of 100 => 110000000000111001100100 => 12586596 (equivalent decimal of the 24bits binary sting).

I have written python code to do this, but this code does not work in sage. Here is the code :

L=(192,14,100)
a=0
for i in range(3):
    a=(a << 8) ^ (L[i])
print a
print bin(a)

What is the best way to do so in Sage?

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
2

answered 2018-10-11 09:11:24 -0600

eric_g gravatar image

Sage's preparser (*) turns ^ into the exponentiation symbol (**), in order to follow standard math notations:

sage: preparse("a=(a << 8) ^ (L[i])")
'a=(a << Integer(8)) ** (L[i])'

To enforce the original (Python) xor behavior, use ^^ instead of ^:

for i in range(3):
    a=(a << 8) ^^ (L[i])

(*) see the answer to this question.

edit flag offensive delete link more

Comments

@eric_g I appreciate your answer. It woks fine.

math.mks@yandex.com gravatar imagemath.mks@yandex.com ( 2018-10-11 09:41:08 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2018-10-11 08:20:46 -0600

Seen: 62 times

Last updated: Oct 11