我从GitHub或此功能的任何:红宝石to_bytes反转功能需要
class String
def to_bytes
(0...self.length/2).map {|i|self[i*2,2].to_i(16)}
end
end
和我的观点是,我真的不知道是什么,整个事情做,特别是自[某件事]部分,请有人可以帮我扭转这个过程吗?我没有经验,而且我迫切需要将这些数字恢复成字符串。
非常感谢
我从GitHub或此功能的任何:红宝石to_bytes反转功能需要
class String
def to_bytes
(0...self.length/2).map {|i|self[i*2,2].to_i(16)}
end
end
和我的观点是,我真的不知道是什么,整个事情做,特别是自[某件事]部分,请有人可以帮我扭转这个过程吗?我没有经验,而且我迫切需要将这些数字恢复成字符串。
非常感谢
我不认为你可以的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
我明白了,这些东西几乎没有任何东西,但是当我查看“a”.to_bytes和其他一些示例时,to_bytes会破坏整个输入...仍然想知道为什么有人会这样做,因为我正在修改其他人的代码,但感谢您的时间,我很感激。 – Redrick
好像很多工作要做,无事......
为什么不你只是
"My string".bytes.reverse
# Or
def reverse_bytes(str)
str.bytes.reverse
end
我会尝试以尽可能简单的英文解释我的方法。 '(0 ... self.length/2)'返回一个字符串长度一半的数字。 ('self'是一个关键字,意味着在像'to_bytes'这样的方法的上下文中,被请求'to_bytes'的字符串。)'map'取数(半个字符串的长度),从中取两个字符该字符串一次,并将每个对转换为十六进制,并将结果放入一个数组中。 – maxenglander