我有一個IP地址,像這樣:IP地址爲二進制用C
address = '192.168.1.11';
,並需要將其轉換成其二進制格式
11000000 10101000 00000001 00001011
我對如何leftshift小數的一些想法數量和使用inet_addr,但不知道我會如何去做。
謝謝,我還是新來C.
我有一個IP地址,像這樣:IP地址爲二進制用C
address = '192.168.1.11';
,並需要將其轉換成其二進制格式
11000000 10101000 00000001 00001011
我對如何leftshift小數的一些想法數量和使用inet_addr,但不知道我會如何去做。
謝謝,我還是新來C.
有一個專門用於將文本IP轉換爲32位「longip」地址的套接字函數,但在這種情況下這可能是不必要的。一個簡單的形式是使用sscanf()
解析它:
char ip[] = "192.168.1.11";
int n1, n2, n3, n4;
sscanf(ip, "%d.%d.%d.%d", &n1, &n2, &n3, &n4).
// Result:
// n1 = 192
// n2 = 168
// n3 = 1
// n4 = 11
可以使用inet_addr(3)
函數將字符串轉換爲in_addr_t
,然後將其轉換成二進制。沒有標準庫函數可以將數字轉換爲二進制,但使用按位邏輯運算符可以非常簡單。
我已經看過整個文檔,但不知道如何將in_addr_t轉換爲二進制文件?感謝您的建議。 – 2013-04-18 02:30:31
'inet_addr'以網絡字節順序將字符串轉換爲32位int,但沒有跡象表明OP需要這樣做,並且很難以機器(endian)獨立的方式使用它。 – 2013-04-18 02:36:25
你想打印的二進制字符串,或者只是有可用的4個數字分別?困難的部分是將一個8位數字轉換爲一串二進制數字;標準C中沒有簡單的功能來做AFAIK。 – 2013-04-18 02:26:40
@JonathanLeffler我懷疑OP實際上只是想將它轉換爲本地整數類型,而不是「二進制格式」。大多數人對錶示的概念感到困惑。 – 2013-04-18 02:31:22
你不想解析「通過」'。'; '。'告訴你什麼時候你到了一個數字的末尾。如果您要發佈一些代碼,您可以獲得更好的幫助,以便人們可以看到您遇到問題的位置。 – 2013-04-18 02:40:52