Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/64: Рейтинг темы: голосов - 64, средняя оценка - 4.92
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 174
1

Перевод из HEX в DEC

17.08.2013, 14:55. Показов 13197. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ситуация такая: надо из HEX сделать десятичные значения
Delphi
1
2
3
4
5
6
   While ((Not Eof(f)) And (FilePos(f)<=rz)) Do Begin
      //Ñàì êîä
      OutFile:='';
      BlockRead(f,Buf^,4,I);          //читаем 4 байта в Buf
      name:=(ТУТ НАДО ПРЕОБРАЗОВАТЬ ДАННЫЕ БУФЕРА В 10 СИСТЕМУ СЧИСЛЕНИЯ)(Buf^);
     Memo1.Lines.Add(name); // выводим значение в MEMO1
Читаю из файла блоки по 4 байта их надо преобразовать в 10 значение и вывести в MEMO1.
Нашел несколько тем на форуме, но что то не вышло выводит кракозябы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2013, 14:55
Ответы с готовыми решениями:

Hex байт из массива вывести в dec виде в файл, умноженное на 0.01
значение hex байта из массива вывести в dec виде в файл, умноженное на 0.01 s:string; buf:array...

Перевод в DEC из INT
как выполнить операцию битового И в Delphi типа такое как в C++ if ((число1 &amp; число2) != 0) в...

Перевод SNMP в HEX
Всем привет! Делаю программу для сбора всех мак адресов с коммутаторов по SNMP OID =...

Перевод из текста в hex и обратно
Доброго времени суток. Прошу помощи в решении задачи: в edit вводим текст к примеру &quot;Конст&quot;, по...

8
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
17.08.2013, 15:10 2
lis5131, один из возможных вариантов решения в приложении.
Если будут вопросы - пишите.

С уважением, SysUnit.
Вложения
Тип файла: rar HEX - DEC.RAR (87.1 Кб, 276 просмотров)
0
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 174
17.08.2013, 15:35  [ТС] 3
Не чего не понял.
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.btnConvertClick(Sender: TObject);
var
  i : integer;
  s : string;
begin
  s := '$' + edtHEX.Text;
  i := StrToInt(s);
  mmoDEC.Lines.Add(IntToStr(i));
end;
кроме того что i - это значение которое мне нужно получить.
предположим я буфер преобразую в значение
Delphi
1
name:=LongInt(Buf^);
если я сразу напишу в мемо name то получу нех значения.
В примере мне не понятно куда подставлять значение из буфера?

пример вида строки в мемо
смещение 1 : смещение2 : название файла (10 система)
0
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
17.08.2013, 20:35 4
lis5131,
Цитата Сообщение от lis5131 Посмотреть сообщение
Ситуация такая: надо из HEX сделать десятичные значения
HEX - DEC - программа, которая переводи из HEX в DEC.
Цитата Сообщение от lis5131 Посмотреть сообщение
предположим я буфер преобразую в значение
Цитата Сообщение от lis5131 Посмотреть сообщение
смещение 1 : смещение2 : название файла (10 система)
В постановку задачи это не входило. Что Вам требуется - опишите.
0
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 174
17.08.2013, 23:48  [ТС] 5
из файла читается по три значения в строчку 2 смещения + название файла (10 значное значение)и выводится все в мемо.(распаковщик псевдо архивов).
Нашел тут немного инфы

пример

Обратной функции (HexToInt) в Delphi, кажется, нет.

С этим замечательно справляется StrToInt, только ему надо сказать, что это в шестнадцатиричной системе, добавив впереди 'x' или '$':

Delphi
1
2
3
  n := StrToInt('x' + S);
  // или
  n := StrToInt('$' + S);
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,255
17.08.2013, 23:56 6
Цитата Сообщение от lis5131 Посмотреть сообщение
пример
Обратной функции (HexToInt) в Delphi, кажется, нет.
С этим замечательно справляется StrToInt, только ему надо сказать, что это в шестнадцатиричной системе, добавив впереди 'x' или '$':
Что-то мне кажется что никаких HEX у вас нет и не было никогда. Вы читаете из файла 4 байта и вам надо получить их строковое представление в десятичной системе счисления. Так?
0
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 174
18.08.2013, 00:11  [ТС] 7
Цитата Сообщение от northener Посмотреть сообщение
Что-то мне кажется что никаких HEX у вас нет и не было никогда. Вы читаете из файла 4 байта и вам надо получить их строковое представление в десятичной системе счисления. Так?
совершенно верно.

Добавлено через 6 минут
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
  // ïîëó÷èòü èñõîäíûå äàííûõ
  //Îòêðûâàåì ôàéë äëÿ ÷òåíèÿ
  AssignFile(f,OpenDialog1.FileName); //Ñâÿçûâàåì ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì
  Reset(f,1);                         //Îòêðûâàåì ôàéë äëÿ ÷òåíèÿ
  // Ðåçåðâèðóåì áóôåð
  GetMem(Buf,4);
  Seek(f,0); // Ïåðåõîä íà íà÷àëî
  BlockRead(f,Buf^,4,I);          //×èòàåì 4 áàéò èç ôàéëà â áóôåð Buf
  rz:=LongInt(Buf^);               //Ïåðåíîñèì äàííûå èç áóôåðà â SM
   //Îáðàáîòêà äî ïîçèöèè â ôàéëå - 815
  Seek(f,4); // Ïåðåõîä íà íà÷àëî
   While ((Not Eof(f)) And (FilePos(f)<=rz)) Do Begin
      //Ñàì êîä
      OutFile:='    ';
      BlockRead(f,Buf^,4,I);          //×èòàåì 4 áàéò èç ôàéëà â áóôåð Buf
      DL1:=IntToStr(LongInt(Buf^));
      DL2:=StrToInt('$' + DL1);
      BlockRead(f,Buf^,4,I);          //×èòàåì 4 áàéò èç ôàéëà â áóôåð Buf
      sm:=LongInt(Buf^);               //Ïåðåíîñèì äàííûå èç áóôåðà â DL
      BlockRead(f,Buf^,4,I);          //×èòàåì 4 áàéò èç ôàéëà â áóôåð Buf
      dl:=LongInt(Buf^);               //Ïåðåíîñèì äàííûå èç áóôåðà â SM
      dl:=dl+sm;
      //Äîáàâëÿåì ñòðîêó â Memo
      Memo1.Lines.Add(IntToHex(SM,8)+' : '+IntToHex(DL,8)+' : '+ IntToStr(DL2));
   End;
  FreeMem(Buf,4);   //Îñâîáîæäàåì ïàìÿòü áóôåðà
  CloseFile(f);      //Çàêðûâàåì âõîäíîé ôàéë
  ShowMessage('Ðàñïàêîâêà çàêîí÷åíà!') ;  // Ñîîáùåíèå î êîíöå
end;
Вот сам код.

Добавлено через 2 минуты
Delphi
1
2
3
      BlockRead(f,Buf^,4,I);          //Читаем 4 байт из файла в буфер Buf
      DL1:=IntToStr(LongInt(Buf^));
      DL2:=StrToInt('$' + DL1);
Вот тут должно быть 10-е значение.
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
18.08.2013, 12:08 8
lis5131, Привет.
Тебе действительно нужно чтобы в Memo первые 2 значения были в 16-ом представлении, а третье в 10-м? А, это наверное, длина блока. Тогда так.
Замени 16-17 строки на:
Delphi
1
      DL2:=LongInt(Buf^);
и всё.
1
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 174
18.08.2013, 13:38  [ТС] 9
Привет.
спасибо все работает.
Кликните здесь для просмотра всего текста

00001000 : 022B7A10 : 1001
022B8000 : 058F7900 : 1002
058F8000 : 0592A670 : 1003
0592A800 : 05BB64E0 : 2019
05BB6800 : 05FBB520 : 2026
05FBB800 : 06101850 : 2034
06102000 : 06A992E4 : 2135
06A99800 : 07576810 : 4005
07577000 : 07CC1788 : 5003
07CC1800 : 07F18780 : 5004
07F18800 : 083F7E5C : 3001
083F8000 : 08CD0498 : 3002
08CD0800 : 097632A0 : 3003
09763800 : 0A21BADC : 3004
0A21C000 : 0ACA9BE0 : 3005
0ACAA000 : 0B257D04 : 3006
0B258000 : 0B3DA9E0 : 3007
0B3DB000 : 0B6E0EB0 : 3008
0B6E1000 : 0C4405AC : 3009
0C440800 : 0C619DF0 : 3900
0C61A000 : 0CCFFAD0 : 6001
0CD00000 : 0CEAA380 : 26001
0CEAA800 : 0D020240 : 26003
0D020800 : 0D35A860 : 26005
0D35B000 : 0D45A480 : 26006
0D45A800 : 0D6275D0 : 26007
0D627800 : 0D710C50 : 26008
0D711000 : 0D867910 : 26009
0D868000 : 0D94F330 : 26010
0D94F800 : 0DB6A600 : 26500
0DB6A800 : 0DC4C490 : 26510
0DC4C800 : 0DD9DA70 : 26520
0DD9E000 : 0DEA4900 : 26530
0DEA5000 : 0DFBA950 : 26540
0DFBB000 : 0E1529A0 : 26550
0E153000 : 0E22BFA0 : 26560
0E22C000 : 0E4F8D30 : 26570
0E4F9000 : 0E6FE1E0 : 26580
0E6FE800 : 0E911DA0 : 32001
0E912000 : 0EAAF800 : 32003
0EAAF800 : 0ECA61A0 : 33001
0ECA6800 : 0EE51FC0 : 33003
0EE52000 : 0EF600C0 : 22001
0EF60800 : 0F0BB350 : 22003
0F0BB800 : 0F1BFB40 : 22005
0F1C0000 : 0F3DAE00 : 22500
0F3DB000 : 0F4BCC90 : 22510
0F4BD000 : 0F60E270 : 22520
0F60E800 : 0F715100 : 22530
0F715800 : 0F82B150 : 22540
0F82B800 : 0F9C31A0 : 22550
0F9C3800 : 0FA9C7A0 : 22560
0FA9C800 : 0FD6E3F0 : 22570
0FD6E800 : 0FF739E0 : 22580
0FF74000 : 100820C0 : 25001
10082800 : 1020CDD0 : 25003
1020D000 : 1031B0C0 : 25005
1031B800 : 10536600 : 25500
10536800 : 10618490 : 25510
10618800 : 10769A70 : 25520
1076A000 : 10870900 : 25530
10871000 : 10986950 : 25540
10987000 : 10B1E9A0 : 25550
10B1F000 : 10BF7FA0 : 25560
10BF8000 : 10EC9BF0 : 25570
10ECA000 : 110CF1E0 : 25580
110CF800 : 119FDB70 : 14001
119FE000 : 11BBDA90 : 14002
11BBE000 : 11D11FF0 : 14003
11D12000 : 12046D30 : 15001
12047000 : 127030F0 : 16001
12703800 : 12E3D230 : 17001
12E3D800 : 1347432C : 10001
13474800 : 13A6E660 : 11001
13A6E800 : 142F5370 : 18001
142F5800 : 14619010 : 19001
14619800 : 152120A0 : 8001
15212800 : 157A3EB0 : 9001
157A4000 : 15DBDF30 : 12001
15DBE000 : 15F84A70 : 13001
15F85000 : 160930C0 : 20001
16093800 : 1616EC90 : 20004
1616F000 : 1627D0C0 : 20005
1627D800 : 16498600 : 20500
16498800 : 1657A490 : 20510
1657A800 : 166CBA70 : 20520
166CC000 : 167D2900 : 20530
167D3000 : 168E8950 : 20540
168E9000 : 16A809A0 : 20550
16A81000 : 16B59FA0 : 20560
16B5A000 : 16E26D30 : 20570
16E27000 : 1702C1E0 : 20580
1702C800 : 1721F840 : 20900
17220000 : 1741A800 : 20910
1741A800 : 175288E8 : 21001
17529000 : 176162A8 : 21004
17616800 : 1771FA28 : 21005
17720000 : 1793AE00 : 21500
1793B000 : 17A1CC90 : 21510
17A1D000 : 17B6E270 : 21520
17B6E800 : 17C75100 : 21530
17C75800 : 17D8B150 : 21540
17D8B800 : 17F231A0 : 21550
17F23800 : 17FFC7A0 : 21560
17FFC800 : 182CE3F0 : 21570
182CE800 : 184D39E0 : 21580
184D4000 : 1860E580 : 27001
1860E800 : 1878EC40 : 27005
1878F000 : 189A9E00 : 27500
189AA000 : 18A8BC90 : 27510
18A8C000 : 18BDD270 : 27520
18BDD800 : 18CE4100 : 27530
18CE4800 : 18DFA150 : 27540
18DFA800 : 18F921A0 : 27550
18F92800 : 1906B7A0 : 27560
1906B800 : 1933D3F0 : 27570
1933D800 : 195429E0 : 27580
19543000 : 198B7180 : 30001
198B7800 : 19A42660 : 30002
19A42800 : 19ABD310 : 30006
19ABD800 : 19B9F490 : 30510
19B9F800 : 19C1A310 : 31002
19C1A800 : 19FE23B0 : 31005
19FE2800 : 1A16D660 : 31006
1A16D800 : 1A2467A0 : 31560
1A246800 : 1A2C1310 : 41002
1A2C1800 : 1A41E910 : 41003
1A41F000 : 1A7D30B0 : 41005
1A7D3800 : 1A95E660 : 41006
1A95E800 : 1AB79600 : 41500
1AB79800 : 1AC5B490 : 41510
1AC5B800 : 1ADACA70 : 41520
1ADAD000 : 1AEB3900 : 41530
1AEB4000 : 1AFC9950 : 41540
1AFCA000 : 1B1619A0 : 41550
1B162000 : 1B23AFA0 : 41560
1B23B000 : 1B50CBF0 : 41570
1B50D000 : 1B7121E0 : 41580
1B712800 : 1BA72E80 : 42001
1BA73000 : 1BBFDE60 : 42002
1BBFE000 : 1BD5B110 : 42003
1BD5B800 : 1BDD6310 : 42006
1BDD6800 : 1BFF1600 : 42500
1BFF1800 : 1C0D3490 : 42510
1C0D3800 : 1C224A70 : 42520
1C225000 : 1C32B900 : 42530
1C32C000 : 1C441950 : 42540
1C442000 : 1C5D99A0 : 42550
1C5DA000 : 1C6B2FA0 : 42560
1C6B3000 : 1C984BF0 : 42570
1C985000 : 1CB8A1E0 : 42580
1CB8A800 : 1D257898 : 34001
1D258000 : 1D3929B0 : 34002
1D393000 : 1DD0AD38 : 34003
1DD0B000 : 1DF28AAC : 34015
1DF29000 : 1E3D9128 : 34017
1E3D9800 : 1E7C0118 : 34018
1E7C0800 : 1F43D7F0 : 34033
1F43D800 : 1F91D688 : 34034
1F91D800 : 1FB1BE30 : 34900
1FB1C000 : 1FC569B8 : 36001
1FC57000 : 201C9EF0 : 36004
201CA000 : 20824590 : 36005
20824800 : 20996028 : 36011
20996800 : 20B93958 : 36012
20B94000 : 20D713A8 : 36013
20D71800 : 20F8C600 : 36500
20F8C800 : 2106E490 : 36510
2106E800 : 211BFA70 : 36520
211C0000 : 212C6900 : 36530
212C7000 : 213DC950 : 36540
213DD000 : 215749A0 : 36550
21575000 : 2164DFA0 : 36560
2164E000 : 2191AD30 : 36570
2191B000 : 21B201E0 : 36580
21B20800 : 221ED898 : 43001
221EE000 : 2232D870 : 43002
2232E000 : 22CA5D38 : 43003
22CA6000 : 22EC3AAC : 43015
22EC4000 : 233446A8 : 43017
23344800 : 236FB698 : 43018
236FB800 : 24373930 : 43033
24374000 : 24824408 : 43034
24824800 : 249FE1F0 : 2060
249FE800 : 24BE01F8 : 4014
24BE0800 : 24D27440 : 4015


это было имя файла.
0
18.08.2013, 13:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2013, 13:38
Помогаю со студенческими работами здесь

Перевод русских букв в hex
Всем привет. Столкнулся с такой проблемой у меня есть функция. function StrToHex(source:...

Перевод Hex в ASCII десятичный код
Добрый день!! Помогите решить задачу. Необходимо перевести из шестьнадцатиричного (8CCCF0B6) в...

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

перевод из hex в dec
люди можете подсказать, эта программа правильная перевод двухбайтного из hex в dec.


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

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