given the following code:
import ctypes ip='192.168.1.1' thisdll = ctypes.cdll['aDLL'] thisdll.functionThatExpectsAnIP(ip)
how can I correctly pack this for a DLL that expects it as a c_ulong datatype?
I’ve tried using:
ip_netFrmt = socket.inet_aton(ip) ip_netFrmt_c = ctypes.c_ulong(ip_netFrmt)
however, the c_ulong() method returns an error because it needs an integer.
is there a way to use struct.pack to accomplish this?
The inet_aton returns a string of bytes. This used to be the lingua franca for C-language interfaces.
Here’s how to unpack those bytes into a more useful value.
This unpacked value can be used with ctypes. The hex thing is just to show you that the unpacked value looks a lot like an IP address.