gpt4 book ai didi

ios - Swift 中的校验和和 XOR

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:42 26 4
gpt4 key购买 nike

我在 Objective-C 中编写了这些方法。它们只是校验和和 XOR 一些 NSData

- (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;
}

但是,我不熟悉按位运算符,尤其是在 Swift 中,这些 UnsafeMutablePointer<Void> ... 东西。

谁能帮我转换这个? (基本上,我需要校验和和 XOR 函数)
还有一件事,他们应该放在 NSData/NSMutableData 中吗?扩展?

谢谢。

最佳答案

UnsafeBufferPointer/UnsafeMutableBufferPointer 可能是您现在需要的。我已经尝试将您的代码翻译成下面的 Swift。 (但是代码没有测试好。)

func XOR(inputData: NSMutableData, withKey key: NSData) {
let b = UnsafeMutableBufferPointer<UInt8>(start:
UnsafeMutablePointer(inputData.mutableBytes), count: inputData.length)

let k = UnsafeBufferPointer<UInt8>(start:
UnsafePointer(key.bytes), count: key.length)

for i in 0..<inputData.length {
b[i] ^= k[i % key.length]
}
}

func checkSum(data: NSData) -> Int {
let b = UnsafeBufferPointer<UInt8>(start:
UnsafePointer(data.bytes), count: data.length)

var sum = 0
for i in 0..<data.length {
sum += Int(b[i])
}
return sum & 0xff
}

关于ios - Swift 中的校验和和 XOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com