У меня есть шестнадцатеричные значения в формате 4a0e94ca и т. Д., И мне нужно преобразовать их в IP-адреса, как я могу это сделать на C#?C# преобразовать hex в ip
ответ
Ну, возьмите формат с IP в таком виде:
192.168.1.1
Чтобы получить его в одно число, вы берете каждую часть, или это вместе, в то время как сдвиг влево, 8 бит.
long l = 192 | (168 << 8) | (1 << 16) | (1 << 24);
Таким образом, вы можете отменить этот процесс для своего номера.
Как так:
int b1 = (int) (l & 0xff);
int b2 = (int) ((l >> 8) & 0xff);
int b3 = (int) ((l >> 16) & 0xff);
int b4 = (int) ((l >> 24) & 0xff);
- Редактирование
Другие плакаты, вероятно, есть способы «чистых» сделать это в C#, так что, вероятно, использовать это в рабочем коде, но я думаю, что так, как я «Опубликованный» - это отличный способ узнать формат IP-адресов.
+1 - Я считаю, что знание побитовой математики, вероятно, является самой важной частью преобразования целых чисел в IP-адреса (и наоборот), даже если ваш язык делает это за вас. –
@Matthew: Хотя я согласен, что побитовая математика полезна, большинство языков, которые являются производными от C, имеют функцию inet_ntop и inet_pton именно для этой цели. – Powerlord
@R. Bemrose: Конечно, но я думаю, что хорошо знать, как работают эти функции *. Каждый по-своему, хотя некоторые люди не так взволнованы, как я о том, что происходит на нижних уровнях :) –
Проверить C# convert integer to hex and back again
var ip = String.Format("{0}.{1}.{2}.{3}",
int.Parse(hexValue.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hexValue.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hexValue.Substring(4, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hexValue.Substring(6, 2), System.Globalization.NumberStyles.HexNumber));
Это довольно приличный способ, но, возможно, не самый быстрый. Тем не менее, +1. –
Если значения представляют собой IPv4-адреса можно использовать метод long.Parse
и передать результат в IPAddress constructor:
var ip = new IPAddress(long.Parse("4a0e94ca", NumberStyles.AllowHexSpecifier));
Если они представляют собой IPv6-адрес должна convert the hex value to a byte array, а затем используйте this IPAddress constructor overload для создания IPAddress.
Также очень хорошо. +1 –
Чище, чем мой метод :) –
Кажется, лучший способ для меня –
- 1. C#: преобразовать hex в GUID
- 2. Как преобразовать String в Hex в c?
- 3. Преобразовать номер Ascii в Hex в C
- 4. В C, как преобразовать char * в hex
- 5. преобразовать массив байтов в hex в C#
- 6. Преобразовать RGBA в HEX
- 7. Перейти: Преобразовать hex в алфавит
- 8. Как преобразовать DWORD в HEX
- 9. Преобразование IP-адресов в Hex
- 10. Как преобразовать hex в двоичный?
- 11. Как преобразовать hex в NSColor?
- 12. Как преобразовать String в Hex и Hex в строку?
- 13. Как преобразовать hexstring в hex?
- 14. Как преобразовать hex в строку?
- 15. Как преобразовать double в hex?
- 16. Преобразовать строку в HEX символов
- 17. Как преобразовать переменную в hex
- 18. правильно преобразовать hex в base64
- 19. Преобразование шестнадцатеричного IP в десятичный IP-адрес в C++
- 20. C - Hex string to literal hex value
- 21. Как преобразовать Hex-строку в значение Hex в scala?
- 22. Как преобразовать строку, содержащую hex в hex в Perl?
- 23. Как конвертировать hex ip из Java?
- 24. преобразовать строку в hex в lua?
- 25. C++ как преобразовать ip-адрес в байты?
- 26. Как преобразовать hex str в массив int
- 27. Преобразование hex в строку в C?
- 28. Как преобразовать NSString в строку HEX в Objective-C?
- 29. Преобразовать цветовой код MS Access в Hex в C#
- 30. Как преобразовать HEX в NSString в Objective-C j?
Dup - http://stackoverflow.com/questions/1139957/c-convert-int-to-hex-and-back-again – johnc
Простите снайпера, я вижу, вы здесь новичок. Пожалуйста, задавайте вопросы перед отправкой дубликата. Ссылка на ответ, который вы ищете, выше – johnc
Является ли это дубликат, зависит от того, как вы определяете IP-адрес, и что такое вывод (я предполагаю, что он должен быть преобразован в строку). –