2014-02-28 177 views
2

我試圖把一個數字用ASCII字母,此刻的我可以一次做一個字母:轉換的整數ASCII值C++

編輯:的RSA加密輸出,我我一直在努力的是一個整數的形式,我試圖找出如何將它轉換爲原始輸入的單詞/句子。我已經快完成了,但我完全陷入了最後的「障礙」。由於評論問我爲什麼要這麼做(或者說有這樣的話),我添加了上下文。

編輯:如果在加密過程中,我使用ASCII值 - 87,所有字母將是2位數字長,消除一些ASCII字符的問題是3個字母,有些是2,這是否使問題更容易平易近人? (它限制我只有字母,但它的目的很好)

#include <string> 
#include <iostream> 

char returnChar(int x) 
{ 
    return (char) x; 
} 

int main() 
{ 
    std::cout << returnChar (119); 
} 

這將轉換32 - > w。

我該如何調整這個函數來允許我將「3232」 - >「ww」或任何其他整數改爲ascii字符,例如: 「32242713」 - >「單詞」。

編輯:我認爲使用某種mod功能將其分成兩個數字塊,然後可以轉換爲字符可能工作?

如何解決一些ASCII碼字符有2位數字和3位數字的問題?我覺得作爲第二編輯

如果你能看到我在完全錯誤的方式走近這個說明這個問題已經解決了,你可以建議由我來請一個可行的替代辦法?

感謝您的任何反饋意見。

+2

你想做什麼?你希望這個問題解決的外部問題是什麼? 「我如何克服一些有2位數字和一些有3位數字的ASCII字符的問題?」永遠不會做這樣的事情。 –

+1

如果您想要將一串數字表示爲一個沒有分隔符的字符串,那麼這將不起作用,因爲解釋中存在歧義。 – merlin2011

+2

也許如果您在數據值之間插入逗號,或者如果將數據存儲在數組中,則可以解決2或3個字符問題。 –

回答

0

你所要求的是不可能的。你有幾個選擇:

  1. 修改int一個字符串,並把空格/其它字符的字符串中:

    std::string test = "119 119";

  2. 總價值轉換爲二進制,並解析字節由字節:

    unsigned int test = 30583; // 119*256+119 char a = (test>>8)&0xff; char b = test&0xff;

  3. 傳遞在載體和共數據同時nvert一個元素:

    std::vector<char> returnChar(const std::vector<int> &data){ std::vector<char> output; for(unsigned int i=0;i<data.size();i++) output.push_back(char(data[i])); return output; }

我可能會堅持使用第二種方法,因爲 - 在這裏胡亂猜測 - 它不應該改變裏面,你實際生成的數字太多的東西。

+0

整數將會是不同的大小,並且每次都由不同的數字組成,所以我不認爲1是一個選項,請您可以擴展2?我不認爲我明白你的意思?感謝您的幫助 – MichaelRad

+0

您能解釋一下當你說「逐字節解析」時你的意思嗎? – MichaelRad

+0

C++中有特殊的二元運算符。整數(通常)是4個字節。您可以使用這些運算符來獲取int的特定字節。我給出的例子將int分解爲兩個字符。如果你想在int中存儲4個值,那麼: 'char a,b,c,d; unsigned int test =(a << 24)+(b << 16)+(c << 8)+ d'並且像例子一樣檢索它們(通過0,8,16和24執行'>>') –