Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/226: Рейтинг темы: голосов - 226, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
1

Перевод из текста в hex и обратно

31.03.2012, 04:30. Показов 46067. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Прошу помощи в решении задачи: в edit вводим текст к примеру "Конст", по нажатию button1 в edit2 переводит текст в hex (пример из онлайн переводчика %41a%43e%43d%441%442), по нажатию button2 в edit2 переводит значение из hex'a в текст.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2012, 04:30
Ответы с готовыми решениями:

Перевод текста в HEX и обратно
Как можно с помощью JavaScript перевести текст в HEX и обратно? Надо что бы переводилась строка...

Перевод содержимого файла в hex и обратно
Здравствуйте, есть необходимость создания hex редактора в QT, так с открытием файла разобрался...

Перевод числа с плавающей точкой в hex и обратно
Доброго времени суток. Имеется число в hex - 3E4CCCCD. Заведомо известно его значение: 0,2. Прошу...

Перевод из текста в ASCII и обратно
Есть программа, часть кода которой ответственна за преобразование текста из textbox'а в цифровое...

17
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
31.03.2012, 07:30 2
Вот например :
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
unit Unit1;
 
interface
 
uses
  SysUtils, Classes, Controls, Forms, StdCtrls;
 
type
  TForm1 = class(TForm)
    btn1: TButton;
    edt1: TEdit;
    edt2: TEdit;
    btn2: TButton;
    edt3: TEdit;
    function StrToHex(source: string): string;
    function HexToStr(hex: string): string;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
{функция преоброзования строки -> HEX }
function TForm1.StrToHex(source: string): string;
var
  i: Integer;
  c: Char;
  s: string;
begin
  s := '';
  for i:=1 to Length(source) do begin
    c := source[i];
    s := s +  IntToHex(Integer(c), 2) + ' ';
  end;
  result := s;
end;
 
{функция преоброзования HEX -> строка}
function TForm1.HexToStr(hex: string): string;
var
  i: Integer;
begin
  hex:= StringReplace(hex, ' ', '', [rfReplaceAll]);
  for i:= 1 to Length(hex) div 2 do
    Result:= Result + Char(StrToInt('$' + Copy(hex, (i-1) * 2 + 1, 2)));
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  edt2.Text := StrToHex(edt1.Text);
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
  edt3.Text:= HexToStr(edt2.Text);
end;
 
end.
2
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
31.03.2012, 07:41 3
Кстати говоря слово "Конст" в 16-ричном коде будет выглядить так : "CA EE ED F1 F2". Можешь проверить в любом hex-редакторе. )
0
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
31.03.2012, 17:25  [ТС] 4
Спасибо огромное, и прошу прощения за отнятое время... но тысяча чертей, видимо я не правильно выразился. Вообщем есть файл, с него построчно читается hex, вот пример строки: 041a043e043d04410442 (так выглядит слово "Конст"). Ещё допустим слово "privet" (так оно будет выглядить после перевода: 007000720069007600650074).

Ещё раз приношу извинения, за не правильность толкования задачи, просто с таким столкнулся впервые, задача специфическая.

Вот пример транслятора... http://centricle.com/tools/ascii-hex/

Добавлено через 31 минуту
upd/ Немного изменил строчку из StrHex c s := s + IntToHex(Integer(c), 2) + ' ';
на s := s +'00'+IntToHex(Integer(c), 2); практически, перевод как в трансляторе (Англ символы),но осталась задача как перевести русские символы по примеру транслятора?
0
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
31.03.2012, 21:59 5
Во-первых слово "Конст" в 16-ричном коде будет выглядить так : "CA EE ED F1 F2" и никак иначе. Сайт который ты используешь - http://centricle.com/tools/ascii-hex/ англоязычный (здавствуй КЭП, как говориться :-) ). А раз англоязычный то и международную таблицу кодировки символов (таблицу ANSCII) они используют для английского языка. В таблице ANSCII с 0 по 127 код идут печатуемые и не печатуемые символы клавиатуры и латинские буквы. Начиная со 128 кода и далее идут символы языка той страны в котрой она используеться (в нашем случае русские символы), а значит переводчик с этого сайта о них ничего не знает, ведь если бы ты был из китая, то код символ таблицы ANSCII под кодом 128 отличался бы от нашего русского, хотя номер кода один и тот же. Если не веришь, то проверь на практике - попробуй перевести на этом сайте любое русское слово в hex-код, а затем обратно в нормальный читаемы вид. Ты никогда не получишь исходного русского слова, даю гарантию в 100%. Если ты хочешь проверить правильность перевода любого русского слова в hex-код, то воспользуйся любой программой на своем компьютере типа WinHEX. Во-вторых никаких двойных нолей вставлять в HEX код не нужно. Из курса информатики мы помним, что каждый символ в комьютере представляеться в виде 8битного (8 цифр) двоичного кода, что соответствует двум цифрам 16-ричного кода (по 4 бита на одну цифру). То есть каждый символ в 16ричном коде представляеться двумя цифрами а не четырмя (то есть например 43 а не 00 43).

Добавлено через 2 минуты
Кстати, символ "%" который выдает переводчик на этом сайте это условное обочначение условного пробела (или как на самом деле пустого места, так как 16ричный код идет подряд без всяких пробелов).
1
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
01.04.2012, 00:04  [ТС] 6
спасибо, вроде бы ещё помню, что к чему). Но задача у программы которую пишу - специфическая, поэтому я и подставляю 00 впереди. Приведу пример: вот исходная строчка из файла, в ней заложено слово "Конст":
1a04 3e04 3d04 4104 4204
Для того, чтобы считать с неё данные мне надо попарно менять местами 2 символа. Вот как выглядит после преобразования. А теперь если написать слово "Конст" в онлайн трансляторе, выше ссылка, то будет вот такое чудо, только в трасляторе нули заменяются %:
041a 043e 043d 0441 0442

С английскими символами же всё впорядке, вот исходная строка
6200 7500 6700 6100 6700
Меняем попарно
0062 0075 0067 0061 0067
И обрабатываем кодом который вы написали выше, всё работает на ура.

Как считать и перевести обратно русские символы? или желательно универсальный перевод с rus на rus и с eng на eng
1
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
01.04.2012, 08:23 7
В трансляторе на том сайте знак % это не замена нуля. Еще раз повторяюсь - 041a 043e 043d 0441 0442 - это не слово "Конст"! Ни в каком виде! ты разве не прочитал что я написал тебе выше? 041a 043e 043d 0441 0442 - этот код ты не переведешь тем же самым транслятором сайта. Ты можешь понять, что этот сайт не правильно переводит русский текст?
1
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
01.04.2012, 12:41  [ТС] 8
я понял, дисскусировать не стану, т.к я не асс в программировании, поэтому и прошу помощи. С помощью гугла нашёл такую вещь http://www.fileformat.info/inf... /index.htm, просто вбил 041a, вот что выдал поиск Unicode Character 'CYRILLIC CAPITAL LETTER KA' (U+041A), UTF-16 (hex) 0x041A (041a), ну и так далее буква "о" - UTF-16 (hex) 0x041E (041e). Есть идеи?)
0
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
01.04.2012, 13:14 9
Так... походу мы друг друга совсем не понимаем.. Что ты прицепился к этому 041a? это ведь неправильный код буквы "К" который тебе выдал тот сайт. Блин, скачай ты себе WinHex и переводи с помошью его любой текст (русский или английский) в hex код. И хватит уже пытаться получить перевод русского текста в hex-код на англоязычных сайтах.
0
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
01.04.2012, 14:08  [ТС] 10
пусть тот сайт выдал неправильный, это------------> уже совсем другой http://www.fileformat.info/inf... /index.htm, который я нагуглил. Как быть с такой кодировкой?

Добавлено через 19 минут
если что, ниже на этом сайте

Java Data
string.toUpperCase()
Н
string.toLowerCase()
н

Character.UnicodeBlock

CYRILLIC

Добавлено через 30 секунд
это 043d
0
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
01.04.2012, 14:36 11
d4hl, мужик, ты уже определись какую кодировку ты будешь для текста использовать. ANSCII или Unicode?

Добавлено через 11 минут
d4hl, Прошу понять, что русский текст в кодировке ANSCII имеет один код а в Unicode другой и соответственно будут разные их представления в HEX. Вы сначала определитесь для какой кодировки требуется написать программу.
1
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
01.04.2012, 14:52  [ТС] 12
исходя из инфы с этого сайта http://www.fileformat.info/inf... /index.htm, следовало быть unicode...

Добавлено через 7 минут
проблема решена частично нашёл вот такую штуку
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure tform1.button1click(sender: tobject);
var
strsource,strdest:string;
i:integer;
tmp:widestring;
begin
strsource := memo1.text;
tmp:=strsource;
strdest:='';
for i:=1 to length(tmp) do
strdest:=strdest+'<'+inttohex(integer(tmp[i]),4)+'>';
memo2.text := strdest;
end;
Как теперь реализовать обратный перевод?
0
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
01.04.2012, 19:09 13
вот для перевода из hex в Unicode, но для отображения в memo тебе придеться делать еще и перевод из unicode в ANSCII. Зачем тебе столько гемороя я просто не представляю.. Чем тебя сразу работа с ANSCII не устроила я не знаю.. Ну дело твое, конечно.

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
function hexTOunicode (source:string):string;
var S,unicod: string;
t: Integer;
begin
unicod:='';
with TStringList.Create do
try
   Text := StringReplace(Source, #32, #13#10, [rfReplaceAll]);
   S := '';
   for t := 0 to Count - 1 do
     S := S + Chr(StrToInt('$' + Strings[t]));
   unicod:=unicod+s;
finally
   Free;
end;
 Result:=unicod;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var text:string;
begin
 strsource := memo2.text;
 tmp:=strsource;
 strdest:='';
 for i:=0 to (length(tmp) div 6)-1 do
 text:=hexTOunicode(copy(tmp,(2+i*6),4));
 
end;
0
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
01.04.2012, 20:17  [ТС] 14
блин то ли я дурак, то ли сани нифига не едут) Объясню по-другому. Вот форма, ввели англ символы, нажали button1 - получили код:


ввели русские символы, нажали button1 - получили код:


Теперь в edit3 по нажатию второй кнопки надо декодировать текст из edit2 в первоначальное значение (такое как в edit1).

Вот unit
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
35
36
37
38
39
40
41
42
43
44
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
strsource,strdest:string;
i:integer;
tmp:widestring;
begin
strsource := Edit1.Text;
tmp:=strsource;
strdest:='';
for i:=1 to length(tmp) do
strdest:=strdest+''+inttohex(integer(tmp[i]),4)+' ';
Edit2.text := strdest;
end;
 
end.
0
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
01.04.2012, 23:17 15
d4hl, Короче вот тебе две проги с исходниками - первая переводит текст по кодировке ANSCII в HEX и обратно в текст по ANSCII. Вторая переводит введенный текст по кодировке Unicode в HEX а потом опять в текст по таблице UNICODE.
Вложения
Тип файла: rar hex.rar (163.4 Кб, 699 просмотров)
Тип файла: rar unicode.rar (166.7 Кб, 580 просмотров)
3
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 13
01.04.2012, 23:46  [ТС] 16
спасибо о великий мастер за время потраченное и помощь!
0
252 / 138 / 45
Регистрация: 19.03.2012
Сообщений: 314
Записей в блоге: 2
02.04.2012, 00:43 17
Да ладно тебе, мы просто долго пытались понять друг друга )). Потребуеться помощь, пиши.
0
0 / 0 / 0
Регистрация: 12.08.2016
Сообщений: 4
24.08.2016, 12:32 18
Andretti, спасибо за код! Кнопку "спасибо" не нашёл, поэтому благодарю через сообщение!
0
24.08.2016, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2016, 12:32
Помогаю со студенческими работами здесь

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

Чтение файла GIF. Перевод текста в HEX. Декодирование GIF анимации
Всем привет.. задача такая: Необходимо открыть файл GIF.. Например, как в этой статье про...

float в HEX и обратно
У меня возникли трудности с конвертацией числа типа float (например 2.534) в 4 байта HEX (например...

Double to hex и обратно
Какое бы ни было число в памяти компьютера всё равно оно представлено в виде 0 и 1, как всем...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru