Недавно я пытаюсь перейти с python2 на python3, в моих кодах есть некоторая работа по чтению аппаратного обеспечения формы данных, у которого есть файл интерфейса .py, вызывающий внешнюю библиотеку .dll. Данные распределяются по памяти между .dll и процедурой python, в частности, ctypes.creat_string_buffer() и ctypes.addressof(), которые правильно работают в среде python2.7, но дают неожиданный результат в python3.6, причина, по-видимому, может быть, ctypes.addressof() дает огромное значение разницы адресов, интересно, в чем причина?
'''python2.7 вывод addressof()
(base) C:\Users\Administrator>python
Python 2.7.15 |Anaconda, Inc.| (default, May 1 2018, 18:37:09) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import *
>>> s = 128
>>> p = create_string_buffer(s)
>>> print(addressof(p))
50341488
>>> hex(addressof(p))
'0x3002670L'
'''
'''python3.6 вывод addressof()
(base) C:\Users\Administrator>conda activate py36
(py36) C:\Users\Administrator>python
Python 3.6.8 |Anaconda, Inc.| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import *
>>> s = 128
>>> p = create_string_buffer(s)
>>> print(addressof(p))
>>> 2241150277680
>>> hex(addressof(p))
>>> '0x209cef75830'
'''
На мой взгляд, вывод функции addressof() в python2 и python3 должен быть приблизительным, но на самом деле это не так. Кто-то, кто может помочь мне указать, что не так с подпрограммой, или со мной, с благодарностью!