gpt4 book ai didi

c++ - NTL 字符串到 ZZ 转换和 ZZ 到字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:05 24 4
gpt4 key购买 nike

所以我正在研究一个基本的 RSA 解密程序,我试图弄清楚如何在字符串和 ZZ 之间进行转换。我看过以下问题:How can i convert a string into a ZZ number? ,但是,我有点困惑,那里的答案对我不起作用。我的代码:

fromBase()
{
string message = "hello world";
ZZ number (INIT_VAL, message.c_str());
cerr << number;
}

给我以下输出。

bad ZZ input
Aborted

所以,我想,没什么大不了的,我会尝试找到 INIT_VAL 应该是什么,这应该让我知道去哪里找。但没有这样的运气,我找不到任何看起来像它的东西。我也用 INIT_VAL_STRUCT 验证了它,并得到了以下错误:

base.cpp: In function âNTL::ZZ fromBase(std::string)â:
base.cpp:24: error: âmessageâ is not a type
base.cpp:24: error: expected â,â or â...â before â.â token

最后,我尝试了此处发布的解决方案:Regarding create a NTL class type我想我可以尝试一些类型转换。这是我的代码:

ZZ fromBase(string message) 
{
ZZ x;
x = conv<ZZ>(message);
return x;
}

这给了我以下内容:

g++ base.cpp -lntl
base.cpp: In function âNTL::ZZ fromBase(std::string)â:
base.cpp:19: error: expected primary-expression before â>â token

好像我没有指定类型。

总而言之,我知道 INIT_VAL 是一个常量,但它似乎没有作用。我感觉我刚刚断开连接,但要找到它并不容易。任何帮助将不胜感激,对 NTL 的任何引用将不胜感激。很抱歉发了这么长的帖子!

(此外,NTL 的文档很少,据我所知,您是否有任何网站可以帮助图书馆的新手?)

最佳答案

您想将实际上包含非数字字符的字符串转换为数字。

字符串没有规范编号,因此您不能一步完成。 C++可以给你一个字符的编号,也就是ascii码。您可以使用此函数获取字符串的 ascii 码:

ZZ stringToNumber(string str)
{
ZZ number = conv<ZZ>(str[0]);
long len = str.length();
for(long i = 1; i < len; i++)
{
number *= 128;
number += conv<ZZ>(str[i]);
}

return number;
}

你通过这个函数得到字符串

string numberToString(ZZ num)
{
long len = ceil(log(num)/log(128));
char str[len];
for(long i = len-1; i >= 0; i--)
{
str[i] = conv<int>(num % 128);
num /= 128;
}

return (string) str;
}

如果您有一些非 ascii 字符,例如 öß,您必须使用其他方法将字符转换为数字。(但我不知道这是如何工作的)

关于c++ - NTL 字符串到 ZZ 转换和 ZZ 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900770/

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