levcom
11/18/2017, 8:37 PMmsink
11/18/2017, 10:51 PMCPointer<T>? and Long available, provided by .toLong() and .toCPointer<T>() extension methods:
val longValue = ptr.toLong()
val originalPtr = longValue.toCPointer<T>()levcom
11/19/2017, 8:27 AMmsink
11/19/2017, 10:31 AMptr.toLong() is C (int)ptr
val.toCPointer<T> is C (T*)valmsink
11/19/2017, 10:37 AMval ipaddr = (ptr[0] << 24) or (ptr[1] << 16) or (ptr[3] << 8) or (ptr[3])olonho
11/20/2017, 5:41 AMolonho
11/20/2017, 6:17 AMlevcom
11/20/2017, 10:51 PMlevcom
11/20/2017, 10:53 PMlevcom
11/20/2017, 10:54 PMlevcom
11/20/2017, 10:55 PMlevcom
11/20/2017, 10:56 PMmsink
11/21/2017, 1:31 AM*((u32*)value) is bad idea - not portable, works only on x86 if not aligned on x4 boundary
linux kernel have macro get_unaligned_be32 and similar, implemented by byte reads and shifts.levcom
11/24/2017, 6:48 PM