+123
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
function HexWrdToStr(Dval : integer) : string;
var i : integer;
retstr : string;
begin
retstr := '';
i := (Dval AND $F000) DIV $1000;
case i of
0 : retstr := retstr + '0';
1 : retstr := retstr + '1';
2 : retstr := retstr + '2';
3 : retstr := retstr + '3';
4 : retstr := retstr + '4';
5 : retstr := retstr + '5';
6 : retstr := retstr + '6';
7 : retstr := retstr + '7';
8 : retstr := retstr + '8';
9 : retstr := retstr + '9';
10 : retstr := retstr + 'A';
11 : retstr := retstr + 'B';
12 : retstr := retstr + 'C';
13 : retstr := retstr + 'D';
14 : retstr := retstr + 'E';
15 : retstr := retstr + 'F';
end;
i := (Dval AND $F00) DIV $100;
case i of
0 : retstr := retstr + '0';
1 : retstr := retstr + '1';
2 : retstr := retstr + '2';
3 : retstr := retstr + '3';
4 : retstr := retstr + '4';
5 : retstr := retstr + '5';
6 : retstr := retstr + '6';
7 : retstr := retstr + '7';
8 : retstr := retstr + '8';
9 : retstr := retstr + '9';
10 : retstr := retstr + 'A';
11 : retstr := retstr + 'B';
12 : retstr := retstr + 'C';
13 : retstr := retstr + 'D';
14 : retstr := retstr + 'E';
15 : retstr := retstr + 'F';
end;
i := (Dval AND $F0) DIV $10;
case i of
0 : retstr := retstr + '0';
1 : retstr := retstr + '1';
2 : retstr := retstr + '2';
3 : retstr := retstr + '3';
4 : retstr := retstr + '4';
5 : retstr := retstr + '5';
6 : retstr := retstr + '6';
7 : retstr := retstr + '7';
8 : retstr := retstr + '8';
9 : retstr := retstr + '9';
10 : retstr := retstr + 'A';
11 : retstr := retstr + 'B';
12 : retstr := retstr + 'C';
13 : retstr := retstr + 'D';
14 : retstr := retstr + 'E';
15 : retstr := retstr + 'F';
end;
i := Dval AND $F;
case i of
0 : retstr := retstr + '0';
1 : retstr := retstr + '1';
2 : retstr := retstr + '2';
3 : retstr := retstr + '3';
4 : retstr := retstr + '4';
5 : retstr := retstr + '5';
6 : retstr := retstr + '6';
7 : retstr := retstr + '7';
8 : retstr := retstr + '8';
9 : retstr := retstr + '9';
10 : retstr := retstr + 'A';
11 : retstr := retstr + 'B';
12 : retstr := retstr + 'C';
13 : retstr := retstr + 'D';
14 : retstr := retstr + 'E';
15 : retstr := retstr + 'F';
end;
HexWrdToStr := retstr;
end;
Авторы - программисты из FTDI, взято из экзамплов работы с USB-конвертерами.
Полный текст можно найти здесь: __http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples/Delphi.htm
З.Ы. Ниже по тексту идет аналогичная функция HexByteToStr. Алгоритм, так сказать, тот же.
Запостил: 1291,
23 Августа 2011
TheHamstertamer 23.08.2011 13:43 # 0
SmackMyBitchUp 23.08.2011 13:46 # +2
Lure Of Chaos 23.08.2011 14:57 # 0
SmackMyBitchUp 23.08.2011 20:28 # +2
If Str = '300' then FT_Current_Baud := FT_BAUD_300 else
If Str = '600' then FT_Current_Baud := FT_BAUD_600 else
If Str = '1,200' then FT_Current_Baud := FT_BAUD_1200 else
If Str = '2,400' then FT_Current_Baud := FT_BAUD_2400 else
If Str = '4,800' then FT_Current_Baud := FT_BAUD_4800 else
If Str = '9,600' then FT_Current_Baud := FT_BAUD_9600 else
If Str = '19,200' then FT_Current_Baud := FT_BAUD_19200 else
If Str = '38,400' then FT_Current_Baud := FT_BAUD_38400 else
If Str = '57,600' then FT_Current_Baud := FT_BAUD_57600 else
If Str = '115,200' then FT_Current_Baud := FT_BAUD_115200 else
If Str = '230,400' then FT_Current_Baud := FT_BAUD_230400 else
If Str = '460,800' then FT_Current_Baud := FT_BAUD_460800 else
If Str = '921,600' then FT_Current_Baud := FT_BAUD_921600 else
FT_SetupError := True;
D2XXUnit оттуда же
1291 23.08.2011 23:11 # +5
SmackMyBitchUp 24.08.2011 11:48 # +1
ctm 24.08.2011 06:19 # +1
SmackMyBitchUp 24.08.2011 11:48 # 0
1291 24.08.2011 12:22 # +2
asm
CMP EDX, 32 // Digits < buffer length?
JBE @A1
XOR EDX, EDX
@A1: PUSH ESI
MOV ESI, ESP
SUB ESP, 32
PUSH ECX // result ptr
MOV ECX, 16 // base 16 EDX = Digits = field width
CALL CvtInt
MOV EDX, ESI
POP EAX // result ptr
CALL System.@LStrFromPCharLen
ADD ESP, 32
POP ESI
end;
Здесь же все непонятно. А у них - наоборот, все понятно и прозрачно, сразу видно, откуда и как получается каждая цифра.
guest8 09.04.2019 11:22 # −999