2017-04-01 73 views
1

我需要幫助轉換little-endian的字符串小端轉換爲ASCII

8989d0261ee17bbf95ea5596711538b0 

爲ASCII。有人能指導我完成這個過程嗎?

我不知道這是否是正確的,但我相信,我可以在這個字符串轉換成十進制做:

8×16 ^(字符串長度)+ 9×16 ^(字符串長度 - 1 )+ ... + 0 * 16^0

(將字符串的值乘以它的位置)。然後,一旦我得到那個,我減去2^32,我會得到十進制的等價物。然後,我可以使用在線轉換器將十進制數轉換爲ASCII。這會工作嗎?

+0

我遵循「由它的位置的字符串值乘以」的一部分,但在那之後,我迷路了。我們很樂意提供幫助。請用一個例子或擴展的解釋[編輯]。另外,如果適用,請使用編程語言進行標記。 –

+0

我想我應該減去2^32,因爲這是我記得在網上某處閱讀的內容。我不應該這樣做嗎? – stackofhay42

+0

我猜這與將無符號整數轉換爲2的補碼有符號整數有關。由於應該是2^128的位數。但我仍然沒有跟隨。 –

回答

0

你的推理是正確的。

如果有一個數字,表示259,在基座10的數目可以被改寫爲

2 * 10^2 + 5 * 10^1 + 9 * 10^0。

同樣,在上面的示例中,字符串中的每個字符都被分配一個值(類似於十六進制)。我發現你的轉換部分是正確的。 二進制補碼是對二進制數的運算,用於有符號數的表示。遵循這種方法,我們必須減去2^32以獲得十進制的等效值。

請注意,也可以執行類似的反向操作來實現ASCII表示(如果您無法使用轉換器)。

這裏是有很多的例子,這可能是您感興趣的鏈接:https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html