我想了解有關uint8_t與字符,可移植性,位操縱,最佳實踐,事件狀態等的情況。您是否瞭解關於該主題的良好閱讀?如何使用uint8_t而不是char?
我希望做字節IO。但是當然char比uint8_t有更復雜和更微妙的定義;我認爲這是引入stdint頭的原因之一。
但是,我在多次使用uint8_t時遇到了問題。幾個月前,曾經,因爲iostreams沒有爲uint8_t定義。是不是有一個C++庫做真正定義好的字節IO,即讀寫uint8_t?如果不是,我認爲沒有需求。爲什麼?
我最近頭痛從這個代碼失敗編譯莖:
uint8_t read(decltype(cin) & s)
{
char c;
s.get(c);
return reinterpret_cast<uint8_t>(c);
}
error: invalid cast from type 'char' to type 'uint8_t {aka unsigned char}'
爲什麼出錯?如何使這項工作?
嗯。改用static_cast <>。 – 2014-10-05 12:49:34
'decltype(cin)'似乎很瘋狂。你真的想'std :: istream&'那裏,沒有別的。 – 2014-10-05 12:51:12
static_cast通過可能使用運行時轉換來保留數字值,如果我沒有弄錯,我想保留確切的位序列(我正在讀取磁盤的MBR) – peterf 2014-10-05 12:56:15