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*)val
msink
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