在ruby中对2个字符串执行按位异或
我正在尝试对ruby中的两个键字符串执行按位异或: 键1:0123456789abcdeffedcba9876543210在ruby中对2个字符串执行按位异或,ruby,bit-manipulation,xor,Ruby,Bit Manipulation,Xor,我正在尝试对ruby中的两个键字符串执行按位异或: 键1:0123456789abcdeffedcba9876543210 键2:00000000000000000000000000 谁能告诉我怎么做,谢谢 有人能告诉我怎么做吗 Ruby中的XOR运算符是^。它可以作为按位和布尔值使用,具体取决于它的参数(请记住,^是一个运算符和一个方法^(x))。在默认类中,Stringis不存在,但您可以自己轻松实现它: class String # converts to array of c
键2:00000000000000000000000000 谁能告诉我怎么做,谢谢 有人能告诉我怎么做吗 Ruby中的XOR运算符是
^
。它可以作为按位和布尔值使用,具体取决于它的参数(请记住,^
是一个运算符和一个方法^(x)
)。在默认类中,String
is不存在,但您可以自己轻松实现它:
class String
# converts to array of chars
def to_a
ret = []
self.each_char do |c|
ret.push c
end
return ret
end
# given two numeric strings,
# returns the bitwise xor string
def ^(s)
aa = self.to_a
ab = s.to_a
lc = (aa.count < ab.count) ? aa.count : ab.count
ret = ""
lc.times do |i|
x = aa[i].to_i ^ ab[i].to_i
ret = ret + x.to_s
end
return ret
end
end
类字符串
#转换为字符数组
def to_a
ret=[]
self.u char do|c|
再推
结束
回程网
结束
#给定两个数字字符串,
#返回按位异或字符串
定义^(s)
aa=自对a
ab=s.to_a
lc=(aa计数
这只是一个例子,还没有经过测试
如果我要在执行逐位异或之前将每个字节转换为二进制。我该怎么做 好的,您想看看或,然后用这些方法实现上面的代码 有人能告诉我怎么做吗 Ruby中的XOR运算符是
^
。它可以作为按位和布尔值使用,具体取决于它的参数(请记住,^
是一个运算符和一个方法^(x)
)。在默认类中,String
is不存在,但您可以自己轻松实现它:
class String
# converts to array of chars
def to_a
ret = []
self.each_char do |c|
ret.push c
end
return ret
end
# given two numeric strings,
# returns the bitwise xor string
def ^(s)
aa = self.to_a
ab = s.to_a
lc = (aa.count < ab.count) ? aa.count : ab.count
ret = ""
lc.times do |i|
x = aa[i].to_i ^ ab[i].to_i
ret = ret + x.to_s
end
return ret
end
end
类字符串
#转换为字符数组
def to_a
ret=[]
self.u char do|c|
再推
结束
回程网
结束
#给定两个数字字符串,
#返回按位异或字符串
定义^(s)
aa=自对a
ab=s.to_a
lc=(aa计数
这只是一个例子,还没有经过测试
如果我要在执行逐位异或之前将每个字节转换为二进制。我该怎么做 好的,您想看看或,然后用这些方法实现上面的代码。成字节,压缩在一起,映射xor,re- 放入字节,压缩在一起,映射xor,re-
如果我要在执行逐位异或之前将每个字节转换为二进制。我该怎么做?@user1428829,请参见编辑。您能告诉我如何使用字符串#字节或字符串#每个#字节进行编辑吗。对不起,我是新手!如果在执行逐位异或运算之前将每个字节转换为二进制,我会非常感激。我该怎么做?@user1428829,请参见编辑。您能告诉我如何使用字符串#字节或字符串#每个#字节进行编辑吗。对不起,我是新手!非常感谢你,汉克斯!我希望结果是:“0123456789ABCDEFFEDCBA9876543210”。您知道如何从两个输入字符串s1和s2中获取该值吗。谢谢,这不是您想要的字符的按位异或。你想要什么还不完全清楚。要获得所需的字符串,您只需执行
s1.upcase
,但这当然不涉及s2
。你能不能把这个问题改成一个非常重要的s2
,这样你就可以更清楚地知道你在搜索什么函数了。谢谢!我希望结果是:“0123456789ABCDEFFEDCBA9876543210”。您知道如何从两个输入字符串s1和s2中获取该值吗。谢谢,这不是您想要的字符的按位异或。你想要什么还不完全清楚。要获得所需的字符串,您只需执行s1.upcase
,但这当然不涉及s2
。你能不能把这个问题改成一个非常重要的s2
,这样你就可以更清楚地知道你在搜索什么函数了。