Требуется обратная функция Ruby to_bytes - PullRequest
1 голос
/ 10 октября 2011

У меня есть эта функция из GitHub или что-то еще:

class String
  def to_bytes
    (0...self.length/2).map {|i|self[i*2,2].to_i(16)}
  end
end

и я хочу сказать, что я не совсем уверен, что именно делает все это, особенно часть себя [что-то], и, пожалуйста, может кто-нибудь помочь мне отменить эту процедуру? Я не опытный, и мне отчаянно нужно вернуть эти числа в строку.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Не думаю, что вы можете надежно преобразовать результат to_bytes обратно в исходную строку. И "a".to_bytes, и "b".to_bytes будут производить [0]. Однако, если предположить, что это не проблема для вас, обратный метод to_bytes будет выглядеть примерно так:

def reverse_string_to_bytes bytes
  result = ""
  bytes.each do |pair|
    result << pair.to_s(16)
  end
end
0 голосов
/ 13 июня 2016

Похоже, много делать ни с чем ...

Почему бы вам просто не

"My string".bytes.reverse
# Or
def reverse_bytes(str)
    str.bytes.reverse
end
...