2015-06-16 51 views
0

我有一個問題,作爲一名學生,我必須使用OpenSSL。我的任務是計算RSA簽名與致盲,並使用charunsigned char。我說過,如果有人想知道爲什麼我使用這些類型,那麼錯綜複雜地使用這些類型,charunsigned char在無符號和有符號字符之間進行轉換。如何?

我的問題是如何使用不需要指針的指針,矢量/指針以及爲什麼不用矩陣應用到自身上的演員和使用演員表的規則和良好的練習建議是什麼。

如果需要更多細節,我很樂意遵守。不言而喻,我已經搜索過但無法找到比鑄造int和unsigned int更令人滿意的答案,因此如果這是轉發,我毫不猶豫地指向正確的方向。

回答

1
char yourChar = 'a'; 
unsigned char yourUChar = static_cast<unsigned char>(yourChar); 

int yourInt = 1; 
unsigned int yourUInt = static_cast<unsigned int>(yourInt); 

一個向量只是多個整數,你會將每個成員都轉換成向量。矩陣也是一樣。

如果將具有負值的帶符號值轉換爲無符號類型,它可能會產生不希望的行爲。例如,將-1轉換爲一個無符號整型會給你一個無符號整型轉換爲-1的按位值。一個32位的有符號int是-1,它是十六進制的0xFFFFFFFF,二進制全1,並且將其轉換爲無符號將使這些位保留爲1,但不是最大可能的32位無符號整數,即4,294,967,295。

+0

基本上你說的是可以從'unsigned'自由投射到純粹的形式。由於存儲器表示形式,給_cast一個negative_,比如說'char'指向一個'unsigned char',就會出現這個問題。 另一方面的問題,是否存在任何現實世界中的否定字符表示,因爲據我所知,ASCII只能表示非負值? 我問這個問題的原因是,如果沒有辦法可以從鍵盤負值輸入,那麼你可以公開地將簽名'char'轉換爲'unsigned'而不用擔心數據改變,對吧? –

+0

在不改變該類型的輸出的情況下,從有符號轉換爲無符號數值的唯一安全方法是在轉換前確保帶符號的值在無符號值的範圍內。所以確保數字不小於0. 無符號字符是非常罕見的,我只見過他們用來存儲數字作爲字符。如果您使用字符作爲文本,只需使用char。如果你想安全地從char到unsigned char,那麼(int)char必須是正數。 我在這裏閱讀更多:http://stackoverflow.com/questions/75191/what-is-an-unsigned-char –

+0

謝謝你的回答! –

相關問題