我試圖重新以下邏輯我在JAVA中創建快捷:XOR A字符串,它是UINT16或UINT32
public String xorMessage(String message, String key) {
try {
if (message == null || key == null) return null;
char[] keys = key.toCharArray();
char[] mesg = message.toCharArray();
int ml = mesg.length;
int kl = keys.length;
char[] newmsg = new char[ml];
for (int i = 0; i < ml; i++) {
newmsg[i] = (char)(mesg[i]^keys[i % kl]);
}//for i
return new String(newmsg);
} catch (Exception e) {
return null;
}
我已經達到了到這裏,而編碼swift3:
import UIKit
import Foundation
let t = "22-Jun-2017 12:30 pm"
let m = "message"
print(UInt8(t))
let a :[UInt8] = Array(t.utf8)
let v = m.characters.map{String ($0) }
print(v)
func encodeWithXorByte(key: UInt8 , Input : String) -> String {
return String(bytes: Input.utf8.map{$0^key}, encoding: String.Encoding.utf8) ?? ""
}
var ml :Int = Int(m.characters.count)
var kl :Int = Int (t.characters.count)
var f = [String]()
for i in 0..<ml{
let key = a[i%kl]
let input = v[i]
f.append(String(bytes: input.utf8.map{$0^key} , encoding : String.Encoding.utf8)!)
// f.append(<#T##newElement: Character##Character#>)
//m[i] = input.utf8.map{$0^key}
}
我試圖獲得一個字符串(消息),這個字符串已經被傳遞給上述函數的鍵所異或。但我在swift中的代碼不工作,因爲它正在返回字符數組,並且我想要一個字符串,如果我嘗試將字符數組轉換爲字符串,它不會在字符串中顯示像\ u {0001}等unicode ...
假設我得到以下的輸出:
["_", "W", "^", "9", "\u{14}", "\t", "H"]
,然後我嘗試轉換爲字符串,我得到這個:
_W^9^h
我想:
_W^9 \ u {14} \ tH
請幫忙。
謝謝@Martin R這解決了我的問題。 –