不知道我是否只是使用它錯誤,因爲這不是我的專業領域,但我的印象是這應該給我一個完整的解碼openframeworks緩衝區(或簡單串,我想盡各種辦法都導致同一太短字符串):Poco :: Base64Decoder流沒有返回完整字符串
string str; // string is a line from a file handle and shows to be ok in the debugger
istringstream istr(str);
Poco::Base64Decoder b64in(istr);
ofBuffer buffer;
b64in >> buffer;
現在一個例子的base64字符串我正在解碼是這一行:
I2J1bmRsZQAAAAAAAAAAAQAAABwvT1NDL1NwYWNlSW50ZW5zaXR5ACxmAAA6nUlSAAAAFC9PU0MvU3BlZWQAACxmAAA90/fPAAAAGC9PU0MvU21vb3RobmVzcwAsZgAAP2Wu5gAAABQvT1NDL1JlYWNoAAAsZgAAPnxQSAAAABgvT1NDL0RlbnNpdHkAAAAALGYAAAAAAAAAAAAYL09TQy9Db2hlcmVuY2UAACxmAAA+tYEGAAAAIC9PU0MvVHJhdmVsSW50ZW5zaXR5AAAAACxmAAA8eQlsAAAAFC9PU0MvUmh5dGhtACxmAAA+6LQ5AAAAGC9PU0MvSGFybW9ueQAAAAAsZgAAPui0OQAAABQvT1NDL0VuZXJneQAsZgAAPYznBA==
行不解析爲一個簡單的ascii文本,而是一些原始的osc數據包被base64轉儲了一些v vvv補丁我沒有訪問...所以我想這也可能是一個編碼問題?
和我在輸出中得到的所有信息,無論我使用streamcopier還是像上面這樣的運算符,都只是「#bundle」。這可能會以某種方式與「#bundle」之後的/角色或其他非標準內容相關?我的印象是,Base64Decoder並不關心空白或任何它在解碼數據中找到的東西。
'std :: string'不是一個字節緩衝區!它實際上關心諸如NULL字符和控制字符之類的東西。 – Paranaix
@Paranaix - std :: string可以存儲控制字符。問題在於,如果程序員明確使用string :: append(),或者使用帶有char *和integer的兩個參數構造函數構造字符串,則只能這樣做。 – PaulMcKenzie
感謝您的快速評論。但是在這裏我使用了一個字節緩衝區,所以只有輸入行是一個字符串。我在想,base64解碼器的輸出不應該關心空白,只是返回所有字符,無論它們實際表示什麼。還有什麼其他方式來檢索base64解碼器的內容?來自波科的複印機返回了相同的結果。 – DasAntonym