C Swift 3.1本规范的等效逻辑
我正在研究线性反馈移位寄存器,我必须安全地编写以下逻辑,我选择了swift,因为它比目标c更安全 如果我将以下C逻辑用作C文件本身,它是否安全?如果没有,我将尝试用swift编写以下代码C Swift 3.1本规范的等效逻辑,c,swift,swift3,C,Swift,Swift3,我正在研究线性反馈移位寄存器,我必须安全地编写以下逻辑,我选择了swift,因为它比目标c更安全 如果我将以下C逻辑用作C文件本身,它是否安全?如果没有,我将尝试用swift编写以下代码 char * lfsr16_obfuscate( char *s, unsigned int length, unsigned int seed) { unsigned int i, lsb; unsigned int lfsr = seed; for (i = 0; i < l
char * lfsr16_obfuscate( char *s, unsigned int length, unsigned int seed)
{
unsigned int i, lsb;
unsigned int lfsr = seed;
for (i = 0; i < length*8; i++)
{
lsb = lfsr & 1u;
lfsr >>= 1u;
if (lsb == 1u)
{
lfsr ^= 0xB400u;
s[i / 8] ^= 1 << (i % 8);
}
}
return s;
}
char*lfsr16_模糊(char*s,无符号整数长度,无符号整数种子)
{
无符号整数i,lsb;
无符号整数lfsr=种子;
对于(i=0;i>=1u;
如果(lsb==1u)
{
lfsr^=0xB400u;
s[i/8]^=1我不太了解LFSR,但考虑到您提供的C代码,我认为swift端口可能是这样的:
func lfsr16_obfuscate(data: String, seed: Int) -> String {
var scalars = Array(data.unicodeScalars).map { UInt8($0.value) }
let len = data.characters.count
var lsb: UInt
var lfsr = UInt(seed)
for i in (0..<len*8) {
lsb = lfsr & 1
lfsr >>= 1
if 1 == lsb {
lfsr ^= 0xB400
scalars[i / 8] ^= UInt8(1 << (i % 8))
}
}
return String(bytes: scalars, encoding: .ascii)!
}
func lfsr16\u模糊(数据:字符串,种子:Int)->String{
var scalars=Array(data.descalars).map{UInt8($0.value)}
设len=data.characters.count
var lsb:UInt
变量lfsr=UInt(种子)
对于(0..>=1)中的i
如果1==lsb{
lfsr^=0xB400
标量[i/8]^=UInt8(1