2017-01-19 4 views
2

Я новичок в Powershell, и я борется с базовым преобразованием из hex в float.Powershell - Hex to IEEE754 Одноточечная плавающая точка

Я хотел бы конвертировать 0x46FEEBD0 в плавающее число 32629.90625 (стандарт IEEE754). Все мои попытки дали мне 1191111632 (или 1,191112E + 09), который является десятичным представлением 0x46FEEBD0.

Есть ли простой способ Powershell для этого?

Благодаря

ответ

1

Да, вы можете использовать метод BitConverter.ToSingle():

# Get the byte representation (produces D0, EB, FE, 46) 
$bytes = [BitConverter]::GetBytes([single]32629.90625) 
$bytes | Foreach-Object { ("{0:X2}" -f $_) } 

# Convert the $bytes back to a float (produces 32629.91) 
[BitConverter]::ToSingle($bytes, 0) 

Редактировать: Спасибо LotPings за указание на то, что я должен использовать единый, а не в два раза.

+1

Поместите '[single]' перед 32629.90625 – LotPings

+0

И измените вторую строку на '($ bytes [$ Bytes.Length..0] | Foreach-Object {(" {0: X2} "-f $ _) }) -join ("") ' – LotPings

+0

Спасибо, я понял. – Seb