1

x86マシンでIPアドレスを16進値に手動で変換する方法を考えていました。たとえば、私が読んでいた本は、192.168.42.72の16進表現を次のように示しています。

    0x482aa8c0

しかし、変換がどのように機能するかを説明することはありません。それで、どうですか?

4

5 に答える 5

9

IPを長整数に変換するときは、各オクテットを逆の順序で取得し、それを乗算します256^n。ここで、nはオクテットのゼロベースの逆インデックスです。

したがって、このIPでは、実行しています

(72 * 256^0) + (42 * 256^1) + (168 * 256^2) + (192 * 256^3)
= 3232246344
= 0xc0a82a48

その本は逆行しているように見えますが、あなたはその考えを理解しています。

于 2012-07-20T15:09:29.883 に答える
1

IPアドレスを持つHEXの場合、このようにフォーマットされていることがあります。

 0xC0.0xA8.0x2A.0x48

16進数をベースにしているため、数値があまり得意ではないため、頭の中でこれを行う方法を説明します。下のグラフは、左側がDEC、右側がHEXです。

0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F

チャートを覚えたら、それは基本的な数学です

192 = C0 =  (192/16) = 12.0 =  take the remainder (0 x 16) = 0 convert it to Hex (0)      
then take the result (12) divide it by 16 (12/16) and if it's less then 1 then just 
covert the remainder to hex 12 = C then add it up backwards for C0

168 = A8 = (168/16) = 10.8 = he remainder (.8 x 16) = 12.8 convert it to hex (A) then 
take the result (12) divide it by 16 (12/16) and if it's less then 1 then just covert 
the remainder to hex 0 = 0 then add it up backwards for 0A8 or A8

42  = 2A = (42/16) = 2.625 = The remainder (.625 x 16) = 10 convert it to hex (A) then 
take the result (2) divide it by 16 (2/16) and if it's less then 1 then just covert the  
remainder to hex 2 = 2 then add it up backwards for 2A

72  = 48 = Your turn
于 2012-07-24T19:25:23.133 に答える
1

PowerShellの回答が表示されないので、ここに進みます。

この最初のサンプルは、IPアドレスを16進数に変換します。

$Octet1 = "{0:X2}" -f 192
$Octet2 = "{0:X2}" -f 168
$Octet3 = "{0:X2}" -f 42
$Octet4 = "{0:X2}" -f 72
$IPAddress = "0x"+$Octet1 + $Octet2 + $Octet3 + $Octet4
$IPAddress

結果

0xC0A82A48

これは、16進数を10進数のIPアドレスに変換し直します。

$Octet1 = "{0:D}" -f 0xC0
$Octet2 = "{0:D}" -f 0xA8
$Octet3 = "{0:D}" -f 0x2A
$Octet4 = "{0:D}" -f 0x48
$IPAddress = $Octet1 +"."+ $Octet2 +"."+ $Octet3 +"."+ $Octet4
$IPAddress

結果

192.168.42.72

于 2014-01-26T23:12:07.113 に答える
0

最初に192.168.42.72を2進数に変換します-11000000.10101000.00101010.01001000次に、2進数から16進数への変換で取得された4〜4ビットを取得します。 C 0. A 8.2 A.4 8は、IPアドレスの正確な16進表現になりました。HEXコードは0xC0A82A48です。

私が知っている最も簡単な方法...

于 2013-02-09T15:50:53.867 に答える
0
$ip = "192.168.2.14"
$ar = $ip.Split('.')
$Octet1 = "{0:X2}" -f [int]$ar[0]
$Octet2 = "{0:X2}" -f [int]$ar[1]
$Octet3 = "{0:X2}" -f [int]$ar[2]
$Octet4 = "{0:X2}" -f [int]$ar[3]
$IPAddress = $Octet4 + $Octet3 + $Octet2 + $Octet1
$IPAddress
于 2015-02-27T23:26:31.223 に答える