Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 172

Инвертировать порядок байт

07.11.2021, 00:34. Показов 2832. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Подскажите кодом пожалуйста как сделать инверсию байт всего файла при загрузке. Т.е. байты идут так 00 D1 FF 2E, а надо D1 00 2E FF и так далее. Чтобы в dump уже были инвертированные данные файлы.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type
  TMyByte = array of byte;
 
var
  dump: TMyByte;
 
 
procedure TForm1.Button1Click(Sender: TObject);
Var
  FS: TFileStream;
begin
  if not OpenDialog1.Execute then exit;
 
  FS := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyNone);
  SetLength(dump, FS.Size);
  FS.Read(PChar(dump)^, Length(dump));
  FS.Free();
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2021, 00:34
Ответы с готовыми решениями:

Инвертировать младший байт длинного целого числа
записать выражение,которое инвертирует младший байт этого числа!!!как???

Инвертировать порядок элементов в массиве
Доброго времени суток, есть задание где нужно инвертировать порядок элементов в массиве, вот в чем вопрос, нужно создавать второй массив и...

Инвертировать порядок цифр десятичного числа
Дано число n, десятичная запись которого не содержит нулей. Получите число, записанное теми же цифрами, но в противоположном порядке. При...

28
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.11.2021, 02:18
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Verevkin Посмотреть сообщение
У динамических массивов есть данные по отрицательному смещению - счётчик ссылок и длина.
пусть смешение будет 0, тогда ты все равно будешь твердить, что адреса совпадут? ну ведь нет. Я так же думал, по аналогии с си, но увы

Добавлено через 1 минуту
Цитата Сообщение от northener Посмотреть сообщение
Arcor, а зачем вы мучаете собачек?
а чем брать мне еще адрес?
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
07.11.2021, 02:18
Цитата Сообщение от Verevkin Посмотреть сообщение
У динамических массивов есть данные по отрицательному смещению - счётчик ссылок и длина.
Тебе спать пора.
У динамических массивов dump это адрес указателя на указатель.
0
Нарушитель
10896 / 5830 / 1289
Регистрация: 12.03.2015
Сообщений: 26,901
07.11.2021, 02:19
Цитата Сообщение от Arcor Посмотреть сообщение
пусть смешение будет 0, тогда ты все равно будешь твердить, что адреса совпадут?
Чо? Не понял...
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
07.11.2021, 02:19
Цитата Сообщение от Arcor Посмотреть сообщение
а чем брать мне еще адрес?
Не мучайте себя. Это сделает сам компилятор.
Ну пока конечно кроме некоторых случаев, которые не относятся к данной теме.
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.11.2021, 02:39
Цитата Сообщение от Verevkin Посмотреть сообщение
Чо? Не понял...
чо? чо?

Пусть динамический будет полностью соответствовать логики статического, сделаем такое условие, но ведь правила не изменятся

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

Цитата Сообщение от northener Посмотреть сообщение
Не мучайте себя. Это сделает сам компилятор.
ну лааадно?
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
07.11.2021, 02:44
Цитата Сообщение от Arcor Посмотреть сообщение
ну лааадно?
А в чём непонятка?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.11.2021, 02:55
Цитата Сообщение от Verevkin Посмотреть сообщение
Ахтунг! Не отлаживал, писал на заборе!
Delphi
1
2
3
4
function BSwap16(W: Word): Word; 
asm
  XCHG    AL,AH
end;
вот я читал файл на работе с ADC данными, надо было Endianы менять, файлы около гига размером, так на порядок быстрее преобразовывает, чем обычной перестановкой, а если еще читать в память блоками по несколько сотен тысяч байт и производить преобразовние кусков в памяти, то вообще все в лет конвертировало, надо только оптимальный размер блока подобрать, чтобы найти точку эффективности

Добавлено через 1 минуту
Цитата Сообщение от northener Посмотреть сообщение
А в чём непонятка?
что сделает компилятор тогда? какое преобразование?
0
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 172
07.11.2021, 13:17  [ТС]
Объясните пожалуйста, а почему так нельзя написать ? Работает и как Веревкин написал и этот код одинаково:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var
  dump: array of byte;
 
implementation
 
{$R *.dfm}
 
procedure ReverseWords();
begin
  for var idx:= 0 to (length(dump) div 2) - 1 do
    begin
      dump[2 * idx]:=     dump[2 * idx] xor dump[2 * idx + 1];
      dump[2 * idx + 1]:= dump[2 * idx + 1] xor dump[2 * idx];
      dump[2 * idx]:=     dump[2 * idx] xor dump[2 * idx + 1];
    end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var
  FS: TFileStream;
begin
  if not OpenDialog1.Execute 
    then exit;
 
  FS := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyNone);
    try
      SetLength(dump, FS.Size);
      FS.Read(dump[0], Length(dump));
    finally
    FS.Free();
    end;
  
  ReverseWords; 
end;
Я просто не пойму зачем писать:
Delphi
1
procedure ReverseWords(var dump: TBytes);
Потом var dump: TBytes снова писать процедуре. Буду благодарен за объяснение.
0
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
07.11.2021, 15:31
Myrus
Глобальные переменные - это как начальство на работе. Чем их меньше, тем лучше для дела.
Вот так
Delphi
1
procedure ReverseWords(var dump: TBytes);
предпочтительнее, хотя результат тот же.
Программка маленькая, тут вообще можно всё. Но для реальных проектов неоправданное изобилие глобальных переменных - глобальное зло. Глобальные пременные, как правило, используют для управления системой, проектом и т.д., не для передачи данных.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2021, 15:31

Инвертировать порядок цыфр в числе(процедура)
Вот я попытался.Но что то не работает... :( public void InvDigits(ref int K) { string S=K.ToString(); ...

Инвертировать каждое слово строки сохранив их порядок
1.Задано строку состоящий из слов и пропусков Переверните каждое слово сохранив их порядок в строке.

Инвертировать слова в предложении не меняя порядок слов
слова в предложении задом на перед не меняя порядок написания. К примеру если было "травка зеленеет солнышко блестит". то стало...

Порядок байт
Здравствуйте, Подскажите пожалуйста, вот есть: int m_int = 1073741824; //в двоичном представлении: 01000000 00000000 00000000...

Порядок байт в union
#include <iostream> using namespace std; void disp_binary(unsigned u); union swap_bytes { short int num; char ch; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru