我有一個十六進制值,例如0x0a010203,我想將它轉換爲一個字符串,以便轉換後它應該像「10.1.2.3」,如何提取來自十六進制值的單個字段?將十六進制值轉換爲C類型字符串的IP地址。
2
A
回答
3
填寫一個struct in_addr
和使用inet_ntoa()
( 「互聯網地址,以ASCII字符串」):
#include <arpa/inet.h>
struct in_addr addr;
addr.s_addr = htonl(0x0a010203); // s_addr must be in network byte order
char *s = inet_ntoa(addr); // --> "10.1.2.3"
注意,返回的字符串通過inet_ntoa()
可能指向可能被後續調用覆蓋的靜態數據。如果它只是被打印,然後不再使用 ,那就沒有問題了。否則就需要重複這個字符串。
2
您可以使用位屏蔽和位移位,如:
unsigned int val = 0x0a010203;
printf("%d.%d.%d.%d",
(val & 0xFF000000) >> 24,
(val & 0x00FF0000) >> 16,
(val & 0x0000FF00) >> 8,
val & 0x000000FF);
相關問題
- 1. 將十六進制字符串轉換爲IP地址
- 2. 如何將字符串MAC地址轉換爲十六進制
- 3. 將字符串Mac地址轉換爲十六進制
- 4. 在Groovy中將字符串格式的IP地址轉換爲十六進制
- 5. 將IP地址轉換爲8位十六進制值
- 6. 將字符串轉換爲十六進制到十六進制
- 7. Swift3將字符串值轉換爲十六進制字符串
- 8. PHP將字符串轉換爲十六進制和十六進制字符串
- 9. C# - 轉換十六進制值的字符串爲十六進制
- 10. 將IP字符串轉換爲dpkt.IP的十六進制
- 11. 轉換十六進制字符串十六進制值
- 12. 將二進制長字符串轉換爲十六進制c#
- 13. 字符串爲十六進制和十六進制轉換爲字符串
- 14. 如何將十六進制字符串轉換爲十進制?
- 15. 將十六進制字符串轉換爲十進制
- 16. 將字符串十進制轉換爲十六進制數
- 17. 將IP地址轉換爲十六進制
- 18. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 19. 將十六進制字符串轉換爲C++中的字節
- 20. matlab:將十六進制值的字符串轉換爲十進制值?
- 21. C#字符串爲十六進制,十六進制到字節轉換
- 22. 將十六進制字符串轉換爲二進制字符串,顯示所有4位十六進制值
- 23. 爲十六進制值轉換爲十六進制字符串在Perl
- 24. 將二進制字符串轉換爲十六進制字符串C
- 25. 將字符串數組轉換爲十六進制數字C
- 26. 轉換十六進制字符串到數字IP地址在PHP
- 27. 將十六進制字符串轉換爲無符號十進制值
- 28. 如何將十六進制字符串轉換爲十六進制字節?
- 29. 將字符轉換爲十六進制
- 30. 如何將字符串轉換爲十六進制值和十六進制值獲取字符串返回
您可以使用循環提取非零數字一個接一個,然後將其轉換爲十進制數。或者您可以使用庫函數組合來解決您的問題。 – Nibnat