[英]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來防止它被視為-1
: hexify((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.