1

我想使用位運算符「&」用繩子一樣,紅寶石字符串:使用位與,對在軌道上

raw_counter_int = raw_counter.to_i 
raw_counter_bin = raw_counter_int.to_s(2) 
u = (2**62 + 2**63) 
k = u.to_s(2) 
r = raw_counter_bin & k 
@counter_msg = r 

但是當我運行我的應用我有此錯誤消息:

undefined method `&' for "10000000000000000000000000000000000000000000000000000000":String 

我如何使用這個運算符「&」與raw_counter_int和你在二進制轉換?

我試試這個:0000 0000 1000 0000 0000 0000 0000 0000(64位)至 在第三個字節和第10個字節之間佔用字節。所以,我希望做一個 按位 「&」 0000 0000 1000 0000 0000 0000 0000 0000 1100 0000 0000 0000 0000 0000僅舉這一點:00 0000 10

+0

這裏不需要字符串轉換'raw_counter_int.to_s(2)'我想。 –

+0

那麼,你把它轉換成一個字符串,你期望什麼? '&'適用於數字,而不是字符串。它已經是一個整數,只需使用&&。 –

+0

爲什麼?當我在raw_counter_bin和k上刪除.to_s(2)時,我就是0,所以我做了652144440&(2 ** 62 + 2 ** 63)並且我想要做10000000000000000000 000000000000000000000000000000000000&110000000000000000000000000000000000000000000000000000000000 – Matarela

回答

0

我嘗試用這樣的:0000 0000 1000位0000 0000 0000 0000 0000(64位)至 需要在第三個字節和第10個字節之間的字節。所以,我希望做一個 按位 「&」 0000 0000 1000 0000 0000 0000 0000 0000 1100 0000 0000 0000 0000 0000僅舉這一點:00 0000 10

讓我們開始吧:

("00000000100000000000000000000000".to_i(2) & "00111111110000000000000000000000".to_i(2)).to_s(2) 
=> "100000000000000000000000" 

這正是預期的!在錯誤("10000000000000000000000000000000000000000000000000000000")顯示的號碼爲2^56,其中,使用逐時與它和2^62+2^63預計給你一個零結果...

我建議你再檢查您的輸入和信任紅寶石的&做這個工作...

+0

謝謝你,我發現它的工作原理... – Matarela