Что нового

Как в HEX строке поменять байты местами, и записать результат в файл?

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Помогите пожалуйста,если кто знает!

Вобщем такая проблема,есть HEX код
Пример: 4D 52 50 47 43 4D 41 50 10 40 отрезок,нужно сохранить в текстовый файл,но что бы код
выгледел так:

Исходник: 4D 52 50 47 43 4D 41 50 10 40
Нужное: 52 4D 47 50 4D 43 50 41 40 10

Чтобы 4D 52 было так 52 4D и так весь текст,это возможно?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Данные, строки] Помогите с Hex

1.
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Данные, строки] Помогите с Hex" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Модератор раздела.








2. Ознакомься - http://autoit-script.ru/index.php?topic=124.0
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Данные, строки] Помогите с Hex

OffTopic:
kzru_hunter
Все терпеливо ждут, когда инициатор темы выполнит предупреждение модератора, а вы!!! :whistle:
Семён Семёнович!
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Re: [Данные, строки] Помогите с Hex

Ограмное спасибо,выручил,есть ещё один вопрос,как сделать
что бы в строке было 42 символа с переходом на следующую
строку и так до конца текста???
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Помогите с Hex

Sergey2210
*Click*
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Данные, строки] Помогите с Hex

Sergey2210 [?]
есть ещё один вопрос
У тебя возможно будет ещё больше вопросов, но ты не сможешь их задавать если будешь игнорировать правила форума.
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Re: [Данные, строки] Помогите с Hex

Мне нужно тему переназвать?


Добавлено:
Сообщение автоматически объединено:

А можно указанное в самом верху темы поместить в GUI окно?В смысле я знаю что можно,но как это сделать,пробывал не получается!
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Как сделать?

Sergey2210
*click*
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Re: Поменять местами первые 4 символа во всех строках

Sergey2210
1) Да, тезка, нужно. Так как правила форума определяют, что название темы должно иметь смысловую нагрузки задаваемоего вопроса. Соответсвенно, названия "помогите", "как сделать это", "не работает" - это плохо, это нарушение, это фуфел.

2) Опятьже. В соответсвии правил форума: 1 тема - 1 вопрос.

3) Если найден ответ на запрашиваемый вопрос, то тема должны быть отмечена как решенная.
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Как сделать чтобы в строке было 42 символа 4D525047... и в остальных так же



Код:
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <string.au3>
$Save_file = 'Hex.txt'
$File = "cfunction.txt"
$HEX = _StringToHEX(FileRead($File,-1))
$main = GUICreate("String To Hex", 520, 550)
$Text = GUICtrlCreateEdit("",10,10,500,500)
GUICtrlSetData(-1,$HEX & @CRLF)
DllCall('User32.dll', 'long', 'AnimateWindow', 'hwnd', $main, 'long', 800, 'long', 0x10)
$Save = GUICtrlCreateButton("Save",10,520,50,20)
$Close = GUICtrlCreateButton("Close",70,520,50,20)
$About = GUICtrlCreateButton("About",130,520,50,20)
GUISetState()

While 1
  $msg = GUIGetMsg()
    Switch $msg
	Case $msg = 0
	Case $Save
		FileWrite($Save_file,$HEX)
    Case $About
		MsgBox(0,"test","test" & @CRLF & "test")
	Case $GUI_EVENT_CLOSE, $Close
		 DllCall('User32.dll', 'long', 'AnimateWindow', 'hwnd', $main, 'long', 800, 'long', 0x10 + 0x10000)
         ExitLoop	
EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Sergey2210 сказал(а):
Исходник: 4D 52 50 47 43 4D 41 50 10 40
Нужное: 52 4D 47 50 4D 43 50 41 40 10

Такой порядок байт называется little-endian. Нет смысла самостоятельно менять последовательность байт. Более подробно я затронул это в этой теме.

P.S

Если уж говорить о строках, то можно так:

Код:
$sData = '4D525047434D41501040'
$bData = Binary('0x' & $sData)
$tByte = DllStructCreate('byte[' & (BinaryLen($bData) - Mod(BinaryLen($bData), 2)) & ']')
$tWord = DllStructCreate('word[' & (DllStructGetSize($tByte) / 2) & ']', DllStructGetPtr($tByte))
DllStructSetData($tByte, 1, $bData)
For $i = 1 To DllStructGetSize($tWord) / 2
	ConsoleWrite(Hex(DllStructGetData($tWord, 1, $i), 4))
Next
ConsoleWrite(@CR)
 
Верх