[英]I'm working on a cipher code using modulos and the letter “u” won't decode properly
這是我運行它時的代碼,如果我鍵入“ under”,則不會顯示,它將解碼為“ nder”。我不確定是我嘗試過的問題中使用的是模數還是數學還有很多其他字母,唯一真正的問題是“ u”
#include <iostream>
std::string decode(std::string input, int shift_amount);
std::string encode(std::string input, int shift_amount);
int main(int argc, char **argv)
{
std::string x = "{qr-or-{rny";
std::string output;
output = decode(x, 13);
std::cout << output << std::endl;
}
std::string encode(std::string input, int shift_amount)
{
for (int i = 0; i < input.length(); i++)
{
input[i] = (input[i] + shift_amount) % 255;
}
return input;
}
std::string decode(std::string input, int shift_amount)
{
for (int i = 0; i < input.length(); i++)
{
input[i] = (input[i] - shift_amount) % -255;
}
return input;
}
簡單測試:
#include <iostream>
int
main()
{
std::cout << (- 13) % (- 255);;
return 0;
}
程序打印-13。
%
運算不是取模運算 ,而是余數:您不會從負數返回正數。 您必須為負數添加255。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.