首頁 >後端開發 >C++ >如何在 C 中有效地將整數轉換為十六進位字串?

如何在 C 中有效地將整數轉換為十六進位字串?

Patricia Arquette
Patricia Arquette原創
2025-01-01 07:51:10631瀏覽

How Can I Efficiently Convert Integers to Hexadecimal Strings in C  ?

在C 中將整數轉換為十六進位字串

儘管很簡單,但在C 中將整數轉換為十六進位字串可能會給開發人員帶來挑戰。與 C 不同,C 缺乏用於此轉換的本機方法。

但是,我們可以利用 的強大功能。庫來完成這個任務。 std::hex 操縱器在過程中起著至關重要的作用。透過將其插入輸出流中,可以以十六進位格式列印整數。

std::cout << std::hex << your_int;

要捕獲整數的十六進位字串表示形式以供以後使用,請考慮使用 std::stringstream 物件。

std::stringstream stream;
stream << std::hex << your_int;
std::string result(stream.str());

在上面的範例中,可以在開頭的 << 後面加上 0x 字首。如果需要,可以進行操作。

值得注意的其他操縱器包括 std::oct(八進位)和 std::dec(十進位)。

但是,std::hex 操縱器預設產生字串僅包含必要數量的十六進位數字的表示形式。如果需要特定的寬度,可以使用 std::setfill 和 std::setw。

stream << std::setfill('0') << std::setw(sizeof(your_type) * 2)
       << std::hex << your_int;

最後,可以定義一個通用函數來處理整數到十六進位的轉換:

template< typename T >
std::string int_to_hex( T i )
{
  std::stringstream stream;
  stream << "0x"
         << std::setfill ('0') << std::setw(sizeof(T)*2)
         << std::hex << i;
  return stream.str();
}

以上是如何在 C 中有效地將整數轉換為十六進位字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn