在C 中使用ostream 將無符號字元印為十六進位
在C 中,直接使用ostream 列印無符號8位元變數將它們視為字符,導致十六進位表示不準確。為了克服這個問題,有幾種方法可用:
轉換為 int
一種常見的方法是在列印之前將 unsigned char 轉換為整數。這會強制 ostream 將值視為十六進位數。例如:
使用十六進位操縱器與 int
或者,您可以直接將十六進位操控器與整數一起使用。這會將整數轉換為十六進位表示形式並將其附加到流中。例如:
將十六進位操縱器與setw 和setfill 結合使用
如果需要前導零進行填充,可以將十六進位操縱器與setw 和setfill 結合使用指定所需的寬度和填充字元。例如:
創建巨集
您可以透過建立組合了必要的 манипуляции 的巨集來簡化列印過程。例如:
使用這個宏,您可以簡單地編寫:
MartinStettner 的解決方案
另一個優雅的解決方案是建立用於無符號字元的自訂流插入器,自動將它們列印為十六進位。有關 MartinStettner 方法的更多詳細信息,請參閱原始問題和答案。
以上是如何在 C 中使用 ostream 將無符號字元列印為十六進位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!