试图让 aerospike ruby 客户端在 1.8 以下工作
Ruby 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
IIRC,Ruby 1.8 字符串,无论出于何种意图和目的,都是 1.9 所视为 ASCII-8BIT 的字符串。因此,String#[]
和String#[]=
是评论中已经建议的前进方式。(1.9 中的相同函数将针对特定偏移量的潜在多字节字符,而不是字节。
有关 Ruby M17N 以及字符串在 Ruby 1.9 中如何更改的更完整讨论,请参阅:
- http://yokolet.blogspot.com/2009/07/design-and-implementation-of-ruby-m17n.html
- http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/
与其依赖于特定版本的 Ruby 如何处理字节/字符/字符串,不如使用 pack
和 unpack
方法。它们始终可用且行为一致。
为了您的使用,将数据unpack
到一个数组中,然后您可以使用普通的数组切片来更改有问题的字节,然后将所有内容pack
回字节流中。