ctypes, показывающий неправильный размер байта [дубликат]

Я запускаю Apache на Ubuntu, и моя проблема в том, что файл /etc/apache2/mods-available/php5.conf отсутствовал:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

Я добавил его обратно, а php правильно обрабатывал файлы php.

6
задан patsimm 17 December 2014 в 09:57
поделиться

1 ответ

Хорошо, поэтому я нашел решение. Спасибо Андреасу, который сказал мне, что моя проблема связана с смещением . Таким образом, решение заключается в добавлении _pack_ = 1 к такой структуре.

class FILE_HEAD(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("name", ctypes.c_char * 4),                    # 4 bytes
        ("size", ctypes.c_int),                         # 4 bytes
        ("Cal_l", ctypes.c_double),                     # 8 bytes
        ("Cal_r", ctypes.c_double),                     # 8 bytes
        ("Speed_ChL", ctypes.c_byte),                   # 1 byte
        ("Speed_Pulses_ChL", ctypes.c_int),             # 4 bytes
        ("Speed_factor_ChL", ctypes.c_double),          # 8 bytes
        ("Quantity_ChL", ctypes.c_char * 3),            # 3 bytes
        ("Description_ChL", ctypes.c_char * 32),        # 32 bytes
        ("Unit_ChL", ctypes.c_char * 8),                # 8 bytes
        ("Speed_ChR", ctypes.c_byte),                   # 1 byte
        ("Speed_Pulses_ChR", ctypes.c_int),             # 4 bytes
        ("Speed_factor_ChR", ctypes.c_double),          # 8 bytes
        ("Quantity_ChR", ctypes.c_char * 3),            # 3 bytes
        ("Description_ChR", ctypes.c_char * 32),        # 32 bytes
        ("Unit_ChR", ctypes.c_char * 8)                 # 8 bytes
    ]                                                   # = 136 bytes
8
ответ дан patsimm 21 August 2018 в 03:09
поделиться
  • 1
    Или используйте FILE_HEAD = struct.Struct('<4siddbid3s32s8sbid3s32s8s'); comi = FILE_HEAD.pack(b"COMI", FILE_HEAD.size - 8, 342.324, 342.324, 1, 123, 123.456, b"Tes", b"Test Desc", b"t/t", 1, 123, 123.456, b"Tes", b"Test Desc", b"t/t"). – eryksun 17 December 2014 в 15:24
  • 2
    Обратите внимание, что вы получаете точно такое же программирование проблемы в C и еще хуже , решение имеет тенденцию быть специфичным для компилятора. – Steve Barnes 6 April 2016 в 04:00
  • 3
    это было действительно полезно – Thomas John 1 March 2018 в 11:40
Другие вопросы по тегам:

Похожие вопросы: