Ask Your Question
1

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

asked 6 years ago

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?

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
2

answered 6 years ago

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.

Preview: (hide)
link

Comments

@eric_g I appreciate your answer. It woks fine.

BSFU gravatar imageBSFU ( 6 years ago )

sage: N(bin(round(pi*10^16)),digits=15) 3.14159265358979e16 But it looks answer is not in binary though.

jarkky gravatar imagejarkky ( 2 years ago )

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: 6 years ago

Seen: 3,454 times

Last updated: Oct 11 '18