#python-3.x #numpy
Вопрос:
Я попытался определить небольшой тип данных endian размером 2 байта в numpy с помощью:
import numpy as np
dt = np.dtype('<u2') # little endian unsigned int
Но если я проверю порядок следования этого типа данных по:
print(dt.byteorder)
Это дает мне: «=» не «.
«=»означает в этом случае «аппаратное обеспечение по умолчанию».
Является ли «маленький эндиан» аппаратным по умолчанию или в чем здесь проблема?
Комментарии:
1. Скорее всего, вы сами ответили на свой вопрос. Не знаю, где бы вы купили сегодня крупногабаритную машину. Вместо этого попробуйте создать большой конечный тип и посмотрите, даст ли это другой результат. Всякий раз, когда мне приходилось использовать явно выраженный код в numpy, он всегда работал точно так, как ожидалось.
2. литтл-эндианец-это не общее аппаратное значение по умолчанию, но это собственный интерфейс на вашем конкретном процессоре. Большинство основных процессоров (x86-64) являются малоэндовскими. Некоторые поддерживают как малое конечное (называемое би-конечным), так и большое конечное, например ARM и PowerPC, хотя на практике стек программного обеспечения, как правило, использует формат малого конечного для обеспечения совместимости. Numpy автоматически преобразует малую конечность в собственную конечность, если ваш процессор (или программный стек для процессоров с двумя конечностями) является малочисленным и делает обратное для большой конечности.