motofan logo
> 

Str2hex, Представить символ hex-числом

Serg c650
сообщение 19.7.2006, 7:14


Поэт?!
*****

Группа: Пользователи
Сообщений: 319
Регистрация: 26.10.2005
Пользователь №: 55 954
Модель телефона: Fly-Ying F003

Рейтинг: 87



Вот KEO дал функцию под Delphi (за что ему огромное спасибо). Не могли бы вы перевести её в Pascal (желательно под MIDLetPascal).
Код

function hex2dec(hex : string) : integer;
type
dectype = array [1..4] of integer;
var
count   : integer;
dec     : dectype;
begin
   if length(hex)<4 then
for count:=1 to (4-length(hex)) do hex:='0'+hex;
   for count:=1 to 4 do
case hex[count] of
    '0': dec[count]:=0;
   '1': dec[count]:=1;
   '2': dec[count]:=2;
   '3': dec[count]:=3;
   '4': dec[count]:=4;
   '5': dec[count]:=5;
   '6': dec[count]:=6;
   '7': dec[count]:=7;
   '8': dec[count]:=8;
   '9': dec[count]:=9;
   'A': dec[count]:=10;
   'a': dec[count]:=10;
   'B': dec[count]:=11;
   'b': dec[count]:=11;
   'C': dec[count]:=12;
   'c': dec[count]:=12;
   'D': dec[count]:=13;
   'd': dec[count]:=13;
   'E': dec[count]:=14;
   'e': dec[count]:=14;
   'F': dec[count]:=15;
   'f': dec[count]:=15;
end;
   hex2dec:=dec[1]*4096+dec[2]*256+dec[3]*16+dec[4];
end; {hex2dec}
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
 
Ответ в темуСоздание новой темы
Ответов(1 - 10)
Stalker.mg
сообщение 19.7.2006, 10:38


Evil
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 11.11.2005
Пользователь №: 57 954
Модель телефона: iPhone 5

Рейтинг: 417



Держи
Код

function hex2dec(hex : string) : integer;
type
dectype = array [1..4] of integer;
var
count   : integer;
dec     : dectype;
begin
  if length(hex)<4 then
for count:=1 to (4-length(hex)) do hex:='0'+hex;
  for count:=1 to 4 do begin
if getChar(hex,count)='0' then dec[count]:=0;
if getChar(hex,count)='1' then dec[count]:=1;
if getChar(hex,count)='2' then dec[count]:=2;
if getChar(hex,count)='3' then dec[count]:=3;
if getChar(hex,count)='4' then dec[count]:=4;
if getChar(hex,count)='5' then dec[count]:=5;
if getChar(hex,count)='6' then dec[count]:=6;
if getChar(hex,count)='7' then dec[count]:=7;
if getChar(hex,count)='8' then dec[count]:=8;
if getChar(hex,count)='9' then dec[count]:=9;
if getChar(hex,count)='a' then dec[count]:=10;
if getChar(hex,count)='A' then dec[count]:=10;
if getChar(hex,count)='b' then dec[count]:=11;
if getChar(hex,count)='B' then dec[count]:=11;
if getChar(hex,count)='c' then dec[count]:=12;
if getChar(hex,count)='C' then dec[count]:=12;
if getChar(hex,count)='d' then dec[count]:=13;
if getChar(hex,count)='D' then dec[count]:=13;
if getChar(hex,count)='e' then dec[count]:=14;
if getChar(hex,count)='E' then dec[count]:=14;
if getChar(hex,count)='f' then dec[count]:=15;
if getChar(hex,count)='F' then dec[count]:=15;
end;
  hex2dec:=dec[1]*4096+dec[2]*256+dec[3]*16+dec[4];
end; {hex2dec}
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg c650
сообщение 19.7.2006, 11:26


Поэт?!
*****

Группа: Пользователи
Сообщений: 319
Регистрация: 26.10.2005
Пользователь №: 55 954
Модель телефона: Fly-Ying F003

Рейтинг: 87



Stalker.mg хотел тебе плюс поставить, но недавно менял тебе рейтинг за вопросы к тесту!

Вот ещё один вопрос: если открыть файл как текстовый, считать какой нибудь символ, а потом перевести в hex (представить hex-числом) что получится? Или насколько это будет верно?
Может у кого код имеется (под MLPascal).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stalker.mg
сообщение 19.7.2006, 11:33


Evil
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 11.11.2005
Пользователь №: 57 954
Модель телефона: iPhone 5

Рейтинг: 417



Цитата
Вот ещё один вопрос: если открыть файл как текстовый, считать какой нибудь символ, а потом перевести в hex (представить hex-числом) что получится?

Получиться число :) . правда если файл записан не в 16-ричной системе будут проблемы :)
Цитата
Или насколько это будет верно?

если нет ошибок в коде для перевода то верно на 100%

У меня вопрос, как ты собираешься выводить эти числа и менять их?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg c650
сообщение 19.7.2006, 11:56


Поэт?!
*****

Группа: Пользователи
Сообщений: 319
Регистрация: 26.10.2005
Пользователь №: 55 954
Модель телефона: Fly-Ying F003

Рейтинг: 87



Цитата
У меня вопрос, как ты собираешься выводить эти числа и менять их?

Скопировал один символ функцией copy. Перевёл этот символ в hex и вывел через formAddTextField!

НО! Для Перевёл этот символ в hex нужен код под MLPascal!

Для Delphi вот:
Код
function StrToHex(Value:   String;
                Digits:  Integer = 1;
                Prefics: String = ' '
                ): String;
// Возвращает строку, содержащую шестнадцатеричное представление
// Value с числом возвращаемых цифр Digits и разделителем между
// ними Prefics
var
i: Integer;
begin
Result:= Value;
if Length(Value) < 1 then exit;
Result:= '';
for i:= 1 to Length(Value) do begin
  try
    if not (Ord(Value[i]) in [124]) then
      Result:= Trim(Result + Prefics + IntToHex(Ord(Value[i]), Digits))
    else begin
      if Prefics = '%' then
        Result:= Result + '%0D%0A' // Переход на новую строку
      else
        Result:= Result + value[i];
    end;
  except
    Result:= Value;
  end;
end;
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Stalker.mg
сообщение 19.7.2006, 12:23


Evil
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 11.11.2005
Пользователь №: 57 954
Модель телефона: iPhone 5

Рейтинг: 417



Хм, есть ли в мидлет паскаль что-то типа try и except из Delphi?

Serg c650,
Выложи функцию IntToHex
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg c650
сообщение 19.7.2006, 13:21


Поэт?!
*****

Группа: Пользователи
Сообщений: 319
Регистрация: 26.10.2005
Пользователь №: 55 954
Модель телефона: Fly-Ying F003

Рейтинг: 87



Цитата
Хм, есть ли в мидлет паскаль что-то типа try и except из Delphi?

Скорее всего нет :( .

Цитата
Выложи функцию IntToHex

Т.е. обратную hex2dec? Щас сяду постараюсь перевести.


Нарыл на форуме MLPascal!
Код
function IntToHex(IntValue, Digits: integer): string;  
var  
 i, j: integer;  
 s: string;  
begin  
 s := '';  
 if IntValue > 0 then  
 begin  
   i := IntValue;  
   while i>0 do  
   begin  
     j := i mod 16;  
     if (j<10) then  
       s := Chr(Ord('0') + j) + s;  
     else  
       s := Chr(Ord('A') + (j - 10)) + s;  
     i := i div 16;  
   end;  
 end;  
 if Digits < 1 then Digits := 1;  
 i := Digits - Length(s);  
 while i>0 do  
 begin  
   s := '0' + s;  
   i := i - 1;  
 end;  
 IntToHex := s;  
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Random
сообщение 25.7.2006, 17:53


Музыкант
******

Группа: Почётные мотофаны
Сообщений: 1 066
Регистрация: 28.1.2005
Пользователь №: 36 054
Модель телефона: iPhone 4S

Рейтинг: 921



Кстати, что касается дельфи, то в нем есть стандартные функции для таких преобразований.
IntToHex(число,кол-во символов в hex числе)
и
StrToInt(строка с числом)
В последнем случае, чтобы Дельфи понял, что в строке hex число, надо поставить перед строкой знак $
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg c650
сообщение 25.7.2006, 17:59


Поэт?!
*****

Группа: Пользователи
Сообщений: 319
Регистрация: 26.10.2005
Пользователь №: 55 954
Модель телефона: Fly-Ying F003

Рейтинг: 87



В дельфи всё конечно проще, но мне нужно для MIDLetPascal!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
0vZ
сообщение 27.7.2006, 7:10


Мото-юрист
*****

Группа: Почётные мотофаны
Сообщений: 371
Регистрация: 15.2.2004
Из: Ростов-на-Дону
Пользователь №: 1 173
Модель телефона: X100/C350/SP3i
Прошивка: G1/74R/WinMobile2005

Рейтинг: 278



Serg c650, ну тебе выше уже написали функцию перевода HEX->INT.
Кстати, ты заглядывай на midletpascal.com (на форум), там я видел несколько вариантов INT<>HEX преобразований.
PS. Неужели ты решил написать HEX редактор на яве в мидлетпаскале???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg c650
сообщение 27.7.2006, 8:53


Поэт?!
*****

Группа: Пользователи
Сообщений: 319
Регистрация: 26.10.2005
Пользователь №: 55 954
Модель телефона: Fly-Ying F003

Рейтинг: 87



0vZ, ну а теперь надо Str2hex! На форуме MP был! Ты там кажись и задавал впрос по переводу :) .

Цитата
PS. Неужели ты решил написать HEX редактор на яве в мидлетпаскале???

А почему бы и нет? И не думайте отговаривать меня!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Str2hex, Представить символ hex-числом · Обо всём · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.7.2025, 18:29

Форум живёт: