相当于 ruby 1.8 中的 String#setbyte 和 String#getbyte



试图让 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 如何处理字节/字符/字符串,不如使用 packunpack 方法。它们始终可用且行为一致。

为了您的使用,将数据unpack到一个数组中,然后您可以使用普通的数组切片来更改有问题的字节,然后将所有内容pack回字节流中。

最新更新