2017-02-11 80 views
1

我沒有任何Crypto ++庫的經驗。在我的項目中,我需要輸入Integerint。這就是我想:類型cast CryptoPP :: Integer到int

int low_bound1=8; 
int low_bound2=9; 
Integer x=1,y=2; 
low_bound1=(int)x; 
low_bound1=(int)y; 

這是我收到的錯誤:

error: invalid cast from type 'CryptoPP::Integer' to type 'int' 

是否有可能呢?如果是,那麼如何?

+1

這是一個多精度整數(它可以存儲值太大,不能用內建類型持有):具有轉換方法:HTTPS ://www.cryptopp.com/docs/ref/class_integer.html例如https://www.cryptopp.com/docs/ref/class_integer.html#a2e90d8f4c5a13e203b94f9abc24d733f –

+0

謝謝,它幫助! –

回答

0

可以嗎?如果是,那麼如何?

是的,它可能可能做到,但不是一個簡單的C風格演員。

以下是手冊中Integer類的文檔:Integer Class Reference。在標題存取,有兩種方法:

bool IsConvertableToLong() const
確定是否該整數是可轉換到長。更多...

signed long ConvertToLong() const
將Integer轉換爲Long。更多...

所以,你需要做的是這樣的:

int low_bound1, low_bound2; 
Integer x=1,y=2; 

if (x > std::numeric_limits<int>::max() || x < std::numeric_limits<int>::min()) 
    throw std::out_of_range("Integer x does not fit int data type"); 

if (y > std::numeric_limits<int>::max() || y < std::numeric_limits<int>::min()) 
    throw std::out_of_range("Integer y does not fit int data type"); 

low_bound1 = static_cast<int>(x.ConvertToLong()); 
low_bound2 = static_cast<int>(y.ConvertToLong()); 
+0

感謝您的幫助! –