2016-02-27 49 views
0

我目前正在編寫一個簡單的程序,通過操縱其位值將字符串轉換爲base64。字符串二進制轉換

如果我使用bitset函數將字符串轉換爲位值,我該如何操作或存儲這些值?

例如,如果我這樣做:

std::cout << bitset<8>(cstring[i]) << std::endl; 

我能打印出所有我想要的二進制值。但我希望能夠操縱這些值。在操作之前是否必須轉換成字符串,還是可以直接操作位。

更具體地說,我想將這些位分組爲6個大小的組,並將這些組的值更改爲一個int值。任何幫助表示讚賞,謝謝!

回答

0

我會建議您不要使用bitset,而是以舊式方式執行base64轉換。取三個輸入字節,如unsigned char s,並使用簡單的按位移查表將其轉換爲base64。

這並不複雜。如果

unsigned char a, b, c; 

是你的輸入字節然後,(從內存中這樣做):

int b1= (a >> 2); 

int b2= ((unsigned char)((a & 0x03) << 4)) | (unsigned char)(b >> 4); 

int b3= ((unsigned char)((b & 0x0F) << 2)) | (unsigned char)(c >> 6); 

int b4= c & 0x3F; 

無需使用位集。你說你正在寫一個簡單的程序?那麼,不能比這更簡單。這是你的四個整數。在最後一步中,使用數組查找將值轉換爲base64字母表。

如果我在這裏犯了一個錯字 - 你會得到一般想法。您可以查找並計算紙張和鉛筆上的實際位移,並以相同的方式實施它們。

+0

是的,這是我第一次直接使用字節。我確實開始想,也許我應該使用操作員來完成這項任務,但我想這可能是另一種方式。感謝您的建議,但我會在這方面得到解決 – calmeishmael

相關問題