2014-11-13 2 views
2

그래서 기본 RSA 암호 해독 프로그램을 만들고 있는데 문자열과 ZZ 사이의 변환 방법을 알아 내려고하고 있습니다. 나는 다음 질문을 보았다 : How can i convert a string into a ZZ number?, 그러나, 나는 조금 혼란스러워하고 거기에 대한 대답이 나에게 도움이되지 못했다. 내 코드 :NTL 문자열을 ZZ로 변환하고 ZZ를 문자열로

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

다음과 같은 결과가 표시됩니다.

bad ZZ input 
Aborted 

그래서, 내가 생각, 더 큰 문제는, 난 그냥 INIT_VAL이 있어야하는데 무엇을 찾으려고하지거야, 그리고 그것은 나에게보고하는 위치의 아이디어를 줄 것이다. 그런 행운은 없었습니다. 나는 그 것처럼 보이는 것을 찾지 못했습니다. 나뿐만 아니라 INIT_VAL_STRUCT 함께 trued, 다음과 같은 오류 있어요 :

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 생각 나는 어떤 종류의 캐스팅을 시도 할 수 있습니다. 나는 유형을 지정하지 않은 것처럼

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

:

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

다음 나에게 준 : 여기에 내 코드입니다.

결론적으로 INIT_VAL은 상수임이 확실합니다.하지만 뭔가 작동하지 않는 것 같습니다. 나는 연결이 끊겼다는 것을 느낀다. 그러나 찾기가 쉽지 않다. 어떤 도움을 주시면 감사하겠습니다. NTL에 대한 모든 언급은 대단히 감사하겠습니다. 긴 게시물을 위해 유감스럽게 생각합니다!

(또한, NTL이 꽤 제대로 문서화는 내가 본 것을 수행에서, 당신은 라이브러리에 초보자를 도울 수있는 사이트가?)

당신은 문자열을 변환 할

답변

1

, 즉 실제로 비 포함 숫자를 숫자로 변환합니다.

문자열의 정규 번호가 없으므로 한 번에 처리 할 수 ​​없습니다. 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; 
} 

에 의해 다시 문자열을 얻을를 ß 당신은에 있습니다 문자를 숫자로 변환하는 다른 방법을 사용하십시오. (하지만이 방법이 정확히 작동하는지 모르겠습니다)