以下のコードで私のエラーが何であるかを誰かが提案できますか。私はそれをするときにそれを期待します
stringXor(hexDecode(s1), hexDecode(s2))
s1.length == s2.length
およびが16 進数でエンコードされた文字列を指定されs1
ている場合、出力は半分s2
(EDITED) の長さのリストになるはずですが、これは 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"
。
すると、2 つの文字列の長さが 100res0.length
になります。466