有人可以在下面的代码中建议我的错误是什么。我希望在做的时候
stringXor(hexDecode(s1), hexDecode(s2))
使用s1.length == s2.length
ands1
并s2
给出十六进制编码的字符串,输出应该是一半(已编辑)长度的列表,但这在 repl 中播放时不成立。
def stringXor(fst: String, snd: String): String = {
val charInts = (fst.toList, snd.toList).zipped map (_ ^ _)
charInts.map(_.toChar).toString
}
def hexDecode(s: String): String = {
hexDec(s.toList).toString
}
def hexDec(s: List[Char]): List[Char] = {
if (s.length == 0)
return Nil
val parts = s.splitAt(2)
dehex(parts._1) :: hexDec(parts._2)
}
def dehex(cs: List[Char]): Char = {
(Character.digit(cs.head, 16) * 16 + Character.digit(cs.last, 16)).toChar
}
编辑:我现在正在尝试在 repl 中使用一些较短的字符串,例如。s1 = "6558333946494f6e487a6c617645783474653745394f41307143733030356a7331695a3474745437654b58344a42415a6f35"
和s2 = "5230744346396f6d53776e70425064303039386f5752465a72363944757a3965697847307734364d52426b595532554c7a68"
。
当我这样做时,res0.length
我得到466
两个字符串的长度为 100。