如何找到字元串的十六進制值
這可能是很容易的事情,但我無法理解這一點。
我有一個字元串“Hi”,
HEXA
它的寫法是這樣的0111 0010 0111 0011
有人可以幫助我理解這種轉換。
他們如何將字元串轉換為
binaries
謝謝
那麼,讓我們從頭開始吧。
字元串 “Hi” 實際上被編碼為
{0x48,0x69}
(根據 ASCII 表),因此字元串-數字數組轉換就像一堆表查找一樣簡單。現在十六進制和二進制之間的轉換很容易。請注意,每個十六進製字元恰好對應於二進制中的四位(因為有 $ 16=2^4 $ 可能的十六進制值)。因此,您可以映射
0x4
到實際的0100
、0x8
to1000
、0x6
to0110
和0x9
to ,1001
從而得到字元串“Hi”的整體序列0100 1000 0110 1001
。相反的方向同樣明顯,您只需將您的位分組為四個一組,然後從中讀取每個十六進製字元,然後在每對字元之間拆分,然後在表格中進行反向查找。
但是,有時您無法享受帶有十六進制條目的 Wikipedia ASCII 表,而是必須使用十進制條目,例如
{72,105}
. 在這種情況下,最簡單的策略是減去 2 擬合的最大冪。例如72-64=8
(請注意:)1000000
和8-8=0
(請注意:)1001000
,您就完成了。現在重複這個過程105
,你應該得到110 1001
並最終通過添加前導零並將所有內容連接起來將所有位字元串填充到字節大小(良好的字節級分組將增加可讀性): “Hi”=0100 1000 0110 1001
。反過來更容易。你總是取一組八位,然後從右到左開始計算 $ \sum_{i=0}^7{b_i\cdot 2^i} $ 要獲得十進製表示,或者用更簡單的話:將第 i 位(從右側)乘以 2 的第 i 次方,然後將所有內容加在一起(使用從零開始的索引)。