gpt4 book ai didi

Swift4 Playgrounds凯撒密码错误

转载 作者:搜寻专家 更新时间:2023-11-01 06:14:45 26 4
gpt4 key购买 nike

我正在尝试在 Swift Playgrounds 中制作凯撒密码,但是每当字母是例如“W”并且我试图将它移动 4,而不是得到“A”时,我只是得到一个错误。如果 ascii 码 + shift 不超过 Z 的 ascii 码,它工作正常,否则我得到

error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

这是我的代码:

func cipher(messageToCipher: String, shift: UInt32) {
var ciphredMessage = ""

for char in messageToCipher.unicodeScalars {
var unicode : UInt32 = char.value

if char.value > 64 && char.value < 123 {
var modifiedShift = shift
if char.value >= 65 && char.value <= 90 {
while char.value + modifiedShift > 90 {
//return to A
modifiedShift -= 26
}
} else if char.value >= 97 && char.value <= 122 {
while char.value + modifiedShift > 122 {
//return to a
modifiedShift -= 26
}
}

unicode = char.value + modifiedShift
}

ciphredMessage += String(UnicodeScalar(unicode)!)
}

print(ciphredMessage)
}

谁能告诉我为什么当字母 + shift 的 ascii 码超过“z”的 ascii 码时我会出错?

最佳答案

shiftUInt32。因此,对于 var modifiedShift = shiftmodifiedShift 也被推断为 UInt32。因此,当您将 modifiedShift 设置为 4,然后尝试从中减去 26 时,这不是可接受的 UInt32 值。

底线,使用有符号整数。

关于Swift4 Playgrounds凯撒密码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624452/

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