--- порядок от старшего байта понимается малый конец

Benpian будет то, что, почему, как три измерения о младшем

что

Endian, байт понимать буквально (байт) последовательность, информатика для структуры в нескольких байт (или переменных файлов и т.д.) конвенции , в настоящее время разделен на большой Endian и мало-Endian

В  uint32_t . 4 байта типа, например, 0x12345678 хранится в переменном типе, переменный с точки зрения, является высокими переменными байтами 0x12, 0x78 низких переменными байт.

Когда переменный  высокий  байт хранятся в памяти  высокого  адреса, переменный  низкий  байт хранятся в памяти  является низким  , когда адрес является обратным порядком байт, как показано ниже:

 

Когда переменный  высокий  байт хранятся в памяти  низких  адресов, переменный  низкий  байт хранится в памяти  максимума  , когда адрес в качестве обратного порядка байт, как показано ниже:

 

Почему

Определение просто согласились, конечно, прямой памяти, но зачем такая конвенция? Почему разделить на две последовательности байтов? Каковы преимущества?

Байт для двух видов двух типов объектов, большой обратный порядок байт  предназначен для  людей , мало-младшему  предназначена для  компьютера .

Большая обратный порядок байты-читаемый человек диета, определяется в соответствии с обычной обработкой чтения потока байт, так что нагрузка по обработке может быть уменьшена в организме человека, порядок байт сети большие байт использовать, когда сетевой сокет при передаче многобитного числа а, в соответствии с чтением привычек, количество полученного старшего байта, 8, таким образом, непосредственно добавляя влево.

Обратный порядок обработка в соответствии с компьютером

        1. Компьютер считывает данные форматы не заботятся, в соответствии с прочитанным только память адреса заказа

        2. Компьютеризированная обработка данных от минимума данных, это определение компьютерного дизайна, поэтому мы должны снизить переменные данные в адрес памяти активного низкого адреса, так что компьютерная обработка данных, чтобы принять то, что мы ожидаем от нижнего адреса начать. Суммарное время работы, немного Кроме того, немного корма CF2, сделать десять последовательно добавляли накопления конечного результата.

В итоге, человек-ориентированный большие обратный порядок байт для упрощения мышления, мало Endian ориентированного компьютера для того, чтобы ускорить обработку.

 

как

Как определить, что компьютер является большим обратным порядком байтов или прямой порядок байтов?

Вы можете просто сделать период суждения программы на языке С

#include <cstdio>
#include <cstdint>

int main()
{
	uint32_t test_code = 0x12345678;
	uint8_t* first = (uint8_t*)&test_code;  //指针指向变量的内存首字节

	printf("first address value is %x,is %s\n", 
			*first, *first == 0x12 ? "Big Endian" : "Little Endian");
	return 0;
}

Вы можете увидеть результат

первый указатель на первый адрес памяти из переменной test_code (адреса памяти) ниже, результат был извлечен 0x78 (переменная низкий адрес), определенные выше, как видно из маленького с обратным порядком байтов

 

Помимо непосредственного просмотра выхода, мы можем увидеть сам, посмотрев на то , как памяти хранятся, используются здесь OllyDbg отлаживать исполняемый файл выше вывода в режиме отладки программы с помощью OllyDbg открыть исполняемый файл:

Право-программа поиска во всех строках, строка Printf здесь в основном найти, потому что это не простая программа шифрования, легко найти место для разговора:

Непосредственно просмотреть адрес переменной свалки

И выход программы был, с низким адресом хранения 0x78, 0x12 с высоким адресом хранения, поэтому малышом с обратным порядком байтов.

 

В самом деле, компьютер не обязательно прямой порядок байты, обратный порядок байт компьютера только по умолчанию, если вам нужно изменить, вы можете установить соответствующие настройки регистра управления, изменить порядок байт для достижения цели, всегда помните, только порядок байт виды конвенций.

 
Опубликовано 19 оригинальных статей · вона похвала 7 · просмотров 6934

рекомендация

отblog.csdn.net/G_METHOD/article/details/104131628