我在Objective-C中運用了這些方法。他們只是校驗和XOR一些NSData
Swift中的Checksum和XOR
- (void)XOR:(NSMutableData *)inputData withKey:(NSData *)key
{
unsigned char* inputByteData = (unsigned char*)[inputData mutableBytes];
unsigned char* keyByteData = (unsigned char*)[key bytes];
for (int i = 0; i < [inputData length]; i++)
{
inputByteData[i] = inputByteData[i]^keyByteData[i % [key length]];
}
}
- (Byte)checkSum:(NSMutableData *)data withLength:(Byte)dataLength
{
Byte * dataByte = (Byte *)malloc(dataLength);
memcpy(dataByte, [data bytes], dataLength);
Byte result = 0;
int count = 0;
while (dataLength>0) {
result += dataByte[count];
dataLength--;
count++;
};
result = result&0xff;
return result&0xff;
}
不過,我不熟悉位運算符,尤其是斯威夫特,這些UnsafeMutablePointer<Void>
......東西。
任何人都可以幫我轉換嗎? (基本上,我需要校驗和和異或函數)
還有一件事情,他們應該在NSData/NSMutableData
擴展?
謝謝。
沒有必要使用'unsafeBitCast'。例如:'let k = UnsafeBufferPointer(start:UnsafePointer(key.bytes),count:key.length)'。 –
@MartinR感謝您的好消息。我的代碼變得更好了。 – findall
謝謝。我會測試它,並標記你的答案爲稍後接受;) –