gpt4 book ai didi

objective-c - 将密码范围移出界限

转载 作者:行者123 更新时间:2023-12-03 16:43:52 24 4
gpt4 key购买 nike

我正在尝试实现一个移位密码,这意味着将字符串中的每个字符移动一定的量。我正确编写的方法替换了第一个字母,但在第二次迭代时它抛出了 Range out ofbounds 异常。

original = @"rt" 第一次将 r 替换为 wt 第二次不会被 y 替换。

shift = 5

#define LETTER_POS 97
#define ALPHABET_LENGTH 26

- (NSString*)encode:(NSString*)original withShift:(int)shift {

NSMutableString* encoded = [NSMutableString stringWithString:original];
for (int i=0; i < [encoded length]; i++) {
char oriChar = [encoded characterAtIndex:i];
if (oriChar == ' ') {
continue;
}
char encChar = ((oriChar - LETTER_POS) + shift) % ALPHABET_LENGTH + LETTER_POS;
NSRange range = {i, i+1};
[encoded replaceCharactersInRange:range withString:[NSString stringWithFormat:@"%c" , encChar]];

}
return encoded;

}

最佳答案

NSRange 有一个位置和一个长度。您使用 i+1 作为长度,因此在第二次迭代中您要求提供超出字符串末尾的字符。你的范围应该是{i, 1}。

关于objective-c - 将密码范围移出界限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940562/

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