簡體   English   中英

C ++任何hex到char

[英]C++ any hex to char

從十六進制到char有更好的方法嗎?

char one = static_cast<char>(0x01);

(因為這個問題 - > 使用指針的C ++,沒有通過

還有一種快速方法可以使用十六進制值(例如0x12345678到字符數組)來生成char數組嗎?

你可以試試這個:

std::string hexify(unsigned int n)
{
  std::string res;

  do
  {
    res += "0123456789ABCDEF"[n % 16];
    n >>= 4;
  } while(n);

  return std::string(res.rbegin(), res.rend());
}

STL為“索引成char數組”技巧致記。

打印char時也要注意,這些char在某些平台上簽名。 如果你想128打印為80而不是FFFFFFFF ,你必須通過先轉換為unsigned char來防止它被視為-1hexify((unsigned char)(c));

你有什么打算被存儲在變量one

寫入的代碼將ASCII字符0x01存儲為one 這是一個控制字符,而不是可打印字符。 如果您正在尋找數字 1,那么您需要明確說出:

char one = '1';

它存儲實際字符,而不是ASCII代碼0x01

如果您嘗試將數字轉換為該數字的字符串表示形式,則需要使用其中一種機制 相反,如果您試圖將32位整數視為4個字節的序列,每個字節都是ASCII字符,則這是另一回事。 為此,你可以這樣做:

uint32_t someNumber = 0x12345678;
std::string myString(4, ' ');
myString[0] = static_cast<char>((someNumber >> 24) & 0xFF);
myString[1] = static_cast<char>((someNumber >> 16) & 0xFF);
myString[2] = static_cast<char>((someNumber >> 8) & 0xFF);
myString[3] = static_cast<char>((someNumber) & 0xFF);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM