我需要在我的某個模型的整數列中存儲字母數字字符串。將字母數字字符串轉換爲整數格式
我曾嘗試:
@result.each do |i|
hex_id = []
i["id"].split(//).each{|c| hex_id.push(c.hex)}
hex_id = hex_id.join
...
Model.create(:origin_id => hex_id)
...
end
當我在地方建立線的使用puts hex_id
控制檯運行它,它返回正確的價值觀,但在origin_id上面的代碼結果被設置爲「2147483647 「對於每一個實例。一個示例字符串輸入是「t6gnk3pp86gg4sboh5oin5vr40」,所以對我來說沒有任何意義。
任何人都可以告訴我這裏出了什麼問題,或者建議一個更好的方法來存儲像上述示例一樣的字符串作爲唯一的整數嗎?
謝謝。
看來你溢出整數邊界。也許你需要更大的數據類型,比如64位整數(long)? – 2013-05-13 19:38:26
@IvayloSlavov也許......但這並不能解釋爲什麼「t6gnk3pp86gg4sboh5oin5vr40」變成了「2147483647」而不是「060003008600401100500050040」。 – aperture 2013-05-13 19:41:50
'「060003008600401100500050040」'是一個數字太大的整數。可能長時間太長。如果十六進制函數只是在整數的二進制表示上設置標誌,那麼當所有標誌都被設置時,你會得到最大值(對於有符號類型的最小值)。但我希望你能收到'-2147483648'。它肯定似乎與結果 – 2013-05-13 19:46:00