异或两个字符串

发布于 2024-11-09 08:04:51 字数 389 浏览 0 评论 0原文

可能的重复:
ruby 中字符串的异或

我想在两个字符串之间进行异或计算。

irb(main):011:0> a = 11110000
=> 11110000
irb(main):014:0> b = 10111100
=> 10111100
irb(main):015:0> a ^ b
=> 3395084

我想这样做:“hello”^“key”

Possible Duplicate:
Xor of string in ruby

I would like to make a XOR calculation between two strings.

irb(main):011:0> a = 11110000
=> 11110000
irb(main):014:0> b = 10111100
=> 10111100
irb(main):015:0> a ^ b
=> 3395084

I would like to do this: "hello" ^ "key"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谢绝鈎搭 2024-11-16 08:04:51
class String
  def ^( other )
    b1 = self.unpack("U*")
    b2 = other.unpack("U*")
    longest = [b1.length,b2.length].max
    b1 = [0]*(longest-b1.length) + b1
    b2 = [0]*(longest-b2.length) + b2
    b1.zip(b2).map{ |a,b| a^b }.pack("U*")
  end
end

p "hello" ^ "key"
#=> "he\a\t\u0016"

如果这不是您想要的结果,那么您需要明确说明您想要如何执行计算,或者您期望什么结果。

class String
  def ^( other )
    b1 = self.unpack("U*")
    b2 = other.unpack("U*")
    longest = [b1.length,b2.length].max
    b1 = [0]*(longest-b1.length) + b1
    b2 = [0]*(longest-b2.length) + b2
    b1.zip(b2).map{ |a,b| a^b }.pack("U*")
  end
end

p "hello" ^ "key"
#=> "he\a\t\u0016"

If this isn't the result you want, then you need to be explicit about how you want to perform the calculation, or what result you expect.

你的往事 2024-11-16 08:04:51
  1. 将两个字符串都转换为字节数组(注意字符编码,并非所有内容都可以用 ASCII 表示)
  2. 用零填充较短的数组,以便它们
  3. 对于从 0 到数组大小的 n 具有相同的大小: XOR firstarray[n]使用 secondaryarray[n],可能将结果存储到结果数组,
  4. 将结果字节数组转换回字符串
  1. convert both strings to byte arrays (take care with the character encoding, not everything can be represented with ASCII)
  2. pad the shorter array with zeroes, so that they're both same size
  3. for n from 0 to array size: XOR firstarray[n] with secondarray[n], probably store the result to result array
  4. convert result byte array back into a string
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文