purebasic.info

PureBasic forum
Текущее время: Ср июл 24, 2019 7:48 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Hex2Dec
СообщениеДобавлено: Пт фев 01, 2019 9:46 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 862
Благодарил (а): 2 раз.
Поблагодарили: 41 раз.
Пункты репутации: 9
AZJIO писал(а):
Сергейчик писал(а):
Раз шифруй задачку(что,куда от куда)
Hex2Dec? по моему в этом слове сказана задача. Форматы с 99% строка, потому что числовые форматы преобразовывать бессмысленно, так как это всего лишь представление числа в визуальном редакторе, а под капотом за ширмой ничего не меняется, а для текстового преобразования да имеет смысл.

Тут нашёл пример импорта функции из языка С++, так может можно сделать типа такого:
Код:
1
2
3
4
5
6
7
8
9
ImportC "msvcrt.lib"
  printf(Format.s, Param1=0, Param2=0, Param3=0, Param4=0)
EndImport
 
OpenConsole()
num1.l = 16049884
num2.s = "16049884"
printf("%06X", num1)
Input()

должно выдать F4E6DC, пока у меня не работает

Так можно переводить строка число а можно строка-строка в виде числа :roll:
Накидал кода но так и не понял что с циклом не так( работает не понятно как)
PS:Исправил теперь вроде бы нормально а то перевёрнуты были цифирки прям шифратор какой то с жатием ,utf16(в виде байта ascii как hex значения) сжимается из 2-х символов 4 байта в один байт....... :roll:
Код:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
 
Global Dim Arr${1}(100);с типом s кажжый символ будет с #null
Global s.s
Global Dim Arr2.a(100)
Procedure.s StrToArrLetter1(String$)
     Protected  LenStr.i
               LenStr=Len(String$)
        If LenStr>0; если набор символов менее 2-х, то не имеет смысла
 
          ReDim Arr${1}(LenStr)
         
                LenStr = @Arr$(0)
                !PUSH esi
                !PUSH edi
                !mov dword esi,[p.v_String$+8]
                !mov dword edi,[p.v_LenStr+8]
                !cikl:
               !
                !mov word ax,[esi]
                !mov word [edi],ax
                !add dword esi,2
                !add dword edi,2
                !cmp word [esi],0
                !jnz cikl
                !pop edi
                !pop esi
               
               
              EndIf
              !mov dword eax,[p.v_LenStr]
              !mov dword [v_s],eax
        ProcedureReturn s
EndProcedure
 Procedure.s HexDec(*s,razmer.i)
     Protected  LenStr.i
 
         ; ReDim Arr${1}(LenStr)
         
                 LenStr = @Arr2(0)
                 razmer*2
                 razmer-2
                 *s+razmer
                 razmer=*s-razmer-2
                !PUSH esi
                !PUSH edi
                !cmp dword esi,[p.v_razmer+8]
                !jz wyiti  
                !mov dword esi,[p.p_s+8]
                !mov dword edi,[p.v_LenStr+8]
                !mov dword [p.v_LenStr+8],0
                ;
 
                !cikl2:
              ; Debug 2
                !MOV byte al,[esi]
               
                ;
                !cmp byte al,47
                !ja hffg
                !cmp byte al,64
                !ja trrr
                !cmp byte al,96
                !ja hggh
                !
                !sub dword esi,2
                !CMP dword esi,[p.v_razmer+8]
                !jnz cikl2
                !jz wyiti
               
               
                !hffg:
               !cmp byte al,58
                !jl sgyy
               
                !trrr:
               !cmp byte al,71
                !jl sdfgg
               
               
                !hggh:
               !cmp byte al,103
                !jl fgsj
                !sub dword esi,2
                !CMP dword esi,[p.v_razmer+8]
                !jnz cikl2
                !jz wyiti
                !fgsj:
               !sub byte al,87
                ;!SHL byte al,4
                !mov byte[edi],al
               
                !sub dword esi,2
                !CMP dword esi,[p.v_razmer+8]
                !jnz zufra2
                !jz wyiti
               
               
               
               
                !sdfgg:
               !sub byte al,55
                ;!SHL byte al,4
                !mov byte[edi],al
                !sub dword esi,2
                !CMP dword esi,[p.v_razmer+8]
                !jnz zufra2
                !jz wyiti
                ;================
               
               
                !sgyy:;1цифра
                !sub byte al,48
                ;!SHL byte al,4
                !mov byte[edi],al
                !sub dword esi,2
                !CMP dword esi,[p.v_razmer+8]
                !jz wyiti
                ;;========================
                !zufra2:
               !mov byte al,[esi]
                !cmp byte al,47
                !ja hffg2
                !cmp byte al,64
                !ja trrr2
                !cmp byte al,96
                !ja hggh2
                !add dword esi,2
                !cmp word [esi],0
                !jnz zufra2
                !jz wyiti
               
                !hffg2:
               !cmp byte al,58
                !jl sgyy2
               
                !trrr2:
               !cmp byte al,71
                !jl sdfgg2
               
                !hggh2:
               !cmp byte al,103
                !jl fgsj2
                !sub dword esi,2
                !CMP dword esi,[p.v_razmer+8]
                !jnz zufra2
                !jz wyiti
                !fgsj2:
               
                !mov word ax,[esi]
                !sub byte al,87
                !shl byte al,4
                !or byte[edi],al
                !sub dword esi,2
                !add dword edi,1
                !add dword [p.v_LenStr+8],1
                !CMP dword esi,[p.v_razmer+8]
                !jnz cikl2
                !jz wyiti
               
               
                !sdfgg2:
               !sub byte al,55
                !shl byte al,4
                !or byte[edi],al
                !sub dword esi,2
                !add dword edi,1
                !add dword [p.v_LenStr+8],1
                !CMP dword esi,[p.v_razmer+8]
                !jnz cikl2
                !jz wyiti
                ;======================
 
                !sgyy2:;2цифра
                !sub byte al,48
                !shl byte al,4
                !or byte[edi],al
                !sub dword esi,2
                !add dword edi,1
                !add dword [p.v_LenStr+8],1
                !CMP dword esi,[p.v_razmer+8]
                !jnz cikl2
               
                !wyiti:
               !pop edi
                !pop esi
               
               
               
               
               
              ;!mov dword eax,[p.v_LenStr]
              ;!mov dword [v_s],eax
        ProcedureReturn s
EndProcedure
;Debug StrToArrLetter1("f0f0f0f1")
;Debug PeekS(@Arr$(0),-1,#PB_Unicode)
 
HexDec(@"1234509975790323679908652368",16)
;Debug PeekS(@Arr$(0),-1,#PB_Unicode)
Debug PeekQ(@Arr2(0))
For i=0 To 15
;Debug Arr2(i)
Next
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex2Dec
СообщениеДобавлено: Вс фев 03, 2019 2:57 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 862
Благодарил (а): 2 раз.
Поблагодарили: 41 раз.
Пункты репутации: 9
AZJIO писал(а):
Только по теме нужно "%d", чтобы в десятичный переводить, а то я забыл что Hex2Dec, а не Dec2Hex.

Hex=шестнадцатеричное строковое
DEC=Десятичное целое(не дробное)в виде числа в памяти(регистре ну или на диске)
А вот 2 что в вашем понимании? :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex2Dec
СообщениеДобавлено: Вс фев 03, 2019 7:03 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6525
Благодарил (а): 28 раз.
Поблагодарили: 220 раз.
Пункты репутации: 57
Сергейчик писал(а):
А вот 2 что в вашем понимании? :D

Это общеупотребительное сокращение Hex to Dec = шестнадцатиричное к десятичному , англо созвучно 2 = to

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Hex2Dec
СообщениеДобавлено: Вс фев 03, 2019 7:06 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 480
Благодарил (а): 34 раз.
Поблагодарили: 55 раз.
Пункты репутации: 0
Сергейчик писал(а):
DEC=Десятичное целое(не дробное)в виде числа в памяти(регистре ну или на диске)
нет утверждения что число должно быть не строковое иначе функция бы называлась Hex2Num например, хотя кто как воспринимает для себя действие.

kvitaliy
не дал нам по-играть словами... я думаю мы оба знали и это был не вопрос а проверка на слабо.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB