2014-12-02 57 views
1

試圖讓塞紅寶石客戶端在1.8mm等效的字符串#setbyte和字符串#了getByte紅寶石1.8

什麼是紅寶石1.8這些調用的同等工作的?

https://github.com/aerospike/aerospike-client-ruby/blob/master/lib/aerospike/utils/buffer.rb#L65

https://github.com/aerospike/aerospike-client-ruby/blob/master/lib/aerospike/utils/buffer.rb#L95

+3

IIRC,即'String#[]'和'String#[] =' – Stefan 2014-12-02 14:06:23

+0

請勿鏈接到非現場代碼。當這些鏈接斷裂,他們會,你的問題將是沒有意義的。相反,只需從鏈接頁面中提取重要部分並將其放入您的問題中。此外,加入鏈接迫使潛在的答覆者追查這些信息,這需要花費額外的時間,並且在某些情況下阻止他們回答。所以,把您需要的信息放在手邊是對您有利的。 – 2014-12-02 16:57:42

回答

1

IIRC,紅寶石1.8字符串,對於所有意圖和目的,什麼1.9會當作ASCII-8BIT。因此,String#[]String#[]=是按照評論中的建議進行操作的方式。 (在1.9相同的功能,將針對在某一個潛在的多字節字符偏移,而不是一個字節)。

有關Ruby的M17N一個更完整的討論和字符串在Ruby 1.9的變化如何,請看:

1

而不是依賴於紅寶石的特定版本如何處理字節/字符/字符串,而是使用packunpack方法。他們始終可用並且行爲一致。

供您使用,unpack將數據寫入數組,然後您可以使用正常的數組切片來更改有問題的字節,然後將所有內容都返回到字節流中。