المشاركات : 30
المواضيع 11
:
: 0
الإنتساب : Jul 2012
استفسار بخصوص تحويل قيم الهيكس الى ارقام صحيحه بمعنى لو لدى مثلا ففى اديت قيمه d82a بالهيكس يكون الناتج لها داخل اديت 2
10968
وعمليه وعكسها لو امكن
المشاركات : 316
المواضيع 64
:
: 1
الإنتساب : Apr 2009
السلام عليكم
كود : Edit2.Text:=[color=Red]IntToHex[/color](StrToInt(Edit1.Text),1)
المشاركات : 39
المواضيع 10
:
: 7
الإنتساب : May 2011
بعد اذن الاخ الفاضل بي سات صاحب الفضل في طرح هذه الاسئلة المهمة اسمحلي اخي ان اسئل
اخي الفاضل paix144 هل ممكن طريقة تجعل كتابة البيانات بالهكس تفصل بينها مسافة بشكل الي ...وللتوصيح مثلا حين نكتب ffffff تصبح داخل البرنامج بهذا التنسيق ff ff ff .....المطلوب طريقة اضافة الفراغ بين القيم دون ان يسبب مشاكل برمجية وحسابية
المشاركات : 30
المواضيع 11
:
: 0
الإنتساب : Jul 2012
paix144 كتب :السلام عليكم
كود : Edit2.Text:=[COLOR=Red]IntToHex[/COLOR](StrToInt(Edit1.Text),1)
شكرا اخى الغالى
المشاركات : 30
المواضيع 11
:
: 0
الإنتساب : Jul 2012
didrosoft كتب :بعد اذن الاخ الفاضل بي سات صاحب الفضل في طرح هذه الاسئلة المهمة اسمحلي اخي ان اسئل
اخي الفاضل paix144 هل ممكن طريقة تجعل كتابة البيانات بالهكس تفصل بينها مسافة بشكل الي ...وللتوصيح مثلا حين نكتب ffffff تصبح داخل البرنامج بهذا التنسيق ff ff ff .....المطلوب طريقة اضافة الفراغ بين القيم دون ان يسبب مشاكل برمجية وحسابية العمل اليدوى بالهيكس جيد ولاكن من الواضح تحويله برمجيا صعب
سنحاول ليوفقنا الله
المشاركات : 39
المواضيع 10
:
: 7
الإنتساب : May 2011
paix144 كتب :السلام عليكم
كود : edit2.text:=[color=red]inttohex[/color](strtoint(edit1.text),1)
اخي هذا الكود لا يعمل بعد التجريب
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
إقتباس :اخي هذا الكود لا يعمل بعد التجريب
يجب اضافة علامة الدولار
PHP كود : Edit2.Text := IntToStr(StrToInt('$' + Edit1.Text));
بالنسبة للسؤال الثاني :
إقتباس :هل ممكن طريقة تجعل كتابة البيانات بالهكس تفصل بينها مسافة بشكل الي ...وللتوصيح مثلا حين نكتب ffffff تصبح داخل البرنامج بهذا التنسيق ff ff ff
هذا حل على السريع :
PHP كود : { ===> By SMP3 <=== } const TwoHexLookup: packed array [0 .. 255] of array [1 .. 3] of Char = ( // '00 ', '01 ', '02 ', '03 ', '04 ', '05 ', '06 ', '07 ', '08 ', '09 ', '0A ', '0B ', '0C ', '0D ', '0E ', '0F ', '10 ', '11 ', '12 ', '13 ', '14 ', '15 ', '16 ', '17 ', '18 ', '19 ', '1A ', '1B ', '1C ', '1D ', '1E ', '1F ', '20 ', '21 ', '22 ', '23 ', '24 ', '25 ', '26 ', '27 ', '28 ', '29 ', '2A ', '2B ', '2C ', '2D ', '2E ', '2F ', '30 ', '31 ', '32 ', '33 ', '34 ', '35 ', '36 ', '37 ', '38 ', '39 ', '3A ', '3B ', '3C ', '3D ', '3E ', '3F ', '40 ', '41 ', '42 ', '43 ', '44 ', '45 ', '46 ', '47 ', '48 ', '49 ', '4A ', '4B ', '4C ', '4D ', '4E ', '4F ', '50 ', '51 ', '52 ', '53 ', '54 ', '55 ', '56 ', '57 ', '58 ', '59 ', '5A ', '5B ', '5C ', '5D ', '5E ', '5F ', '60 ', '61 ', '62 ', '63 ', '64 ', '65 ', '66 ', '67 ', '68 ', '69 ', '6A ', '6B ', '6C ', '6D ', '6E ', '6F ', '70 ', '71 ', '72 ', '73 ', '74 ', '75 ', '76 ', '77 ', '78 ', '79 ', '7A ', '7B ', '7C ', '7D ', '7E ', '7F ', '80 ', '81 ', '82 ', '83 ', '84 ', '85 ', '86 ', '87 ', '88 ', '89 ', '8A ', '8B ', '8C ', '8D ', '8E ', '8F ', '90 ', '91 ', '92 ', '93 ', '94 ', '95 ', '96 ', '97 ', '98 ', '99 ', '9A ', '9B ', '9C ', '9D ', '9E ', '9F ', 'A0 ', 'A1 ', 'A2 ', 'A3 ', 'A4 ', 'A5 ', 'A6 ', 'A7 ', 'A8 ', 'A9 ', 'AA ', 'AB ', 'AC ', 'AD ', 'AE ', 'AF ', 'B0 ', 'B1 ', 'B2 ', 'B3 ', 'B4 ', 'B5 ', 'B6 ', 'B7 ', 'B8 ', 'B9 ', 'BA ', 'BB ', 'BC ', 'BD ', 'BE ', 'BF ', 'C0 ', 'C1 ', 'C2 ', 'C3 ', 'C4 ', 'C5 ', 'C6 ', 'C7 ', 'C8 ', 'C9 ', 'CA ', 'CB ', 'CC ', 'CD ', 'CE ', 'CF ', 'D0 ', 'D1 ', 'D2 ', 'D3 ', 'D4 ', 'D5 ', 'D6 ', 'D7 ', 'D8 ', 'D9 ', 'DA ', 'DB ', 'DC ', 'DD ', 'DE ', 'DF ', 'E0 ', 'E1 ', 'E2 ', 'E3 ', 'E4 ', 'E5 ', 'E6 ', 'E7 ', 'E8 ', 'E9 ', 'EA ', 'EB ', 'EC ', 'ED ', 'EE ', 'EF ', 'F0 ', 'F1 ', 'F2 ', 'F3 ', 'F4 ', 'F5 ', 'F6 ', 'F7 ', 'F8 ', 'F9 ', 'FA ', 'FB ', 'FC ', 'FD ', 'FE ', 'FF ');
HexMask: array [0 .. 3] of DWORD = ($FF, $FF00, $FF0000, $FF000000); HexMaskMove: array [0 .. 3] of DWORD = ($0, $8, $10, $18);
function IntToMyFormat(Value: UINT): string; var LValue: UInt64; nDigit, i: integer; begin Result := ''; LValue := Value; if LValue and ($FF shl $18) <> 0 then nDigit := 8 else if LValue and ($FF shl $10) <> 0 then nDigit := 6 else if LValue and $FF00 <> 0 then nDigit := 4 else nDigit := 2; for i := (nDigit shr 1) downto 1 do begin LValue := Byte((Value and HexMask[i - 1]) shr HexMaskMove[i - 1]); Result := Result + TwoHexLookup[LValue]; end; Result := Trim(Result); end;
procedure TForm2.Button1Click(Sender: TObject); var sHex: string; begin sHex := IntToMyFormat($FFFFFF); Edit2.Text := sHex; // sHex = FF FF FF . end;
Open Your Source .. Open Your Mind
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
طريقة آخرى بإستعمال Format and IntToHex
طريقة التحويل من هكس إلى عدد صحيح :
PHP كود : function ConvertToInt(Hex : Cardinal):Integer ; begin Result := StrToInt(Format('%d', [Hex])); end;
وهذه دالة التحويل من عدد صحيح إلى هكس والمخرجات (string)
PHP كود : function ConvertToHexAsString(i : Byte):string; begin Result := IntToHex(i, 2); end;
function ConvertToHexAsString(i : Word):string; begin Result := IntToHex(i, 4); end;
function ConvertToHexAsString(i : DWORD):string; begin Result := IntToHex(i, 8); end;
function ConvertToHexAsString(i : UInt64):string; begin Result := IntToHex(i, 16); end;
وهذا تطبيق لـ
إقتباس :هل ممكن طريقة تجعل كتابة البيانات بالهكس تفصل بينها مسافة بشكل الي ...وللتوصيح مثلا حين نكتب ffffff تصبح داخل البرنامج بهذا التنسيق ff ff ff
PHP كود : unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type TForm1 = class(TForm) btn1: TButton; mmo1: TMemo; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
const arrX : array[0..19] of Byte = ($55, $2, $FF, $C3, $A1, $EE, $71, $4E, $CD, $10, $32, $85, $A9, $E3, $DF, $A, $CE, $00, $00, $C3);
function ConvertToHexAsString(i : UInt64):string; overload; function ConvertToHexAsString(i : DWORD):string; overload; function ConvertToHexAsString(i : Word):string; overload; function ConvertToHexAsString(i : Byte):string; overload;
implementation
{$R *.dfm}
function ConvertToInt(Hex : Cardinal):Integer ; begin Result := StrToInt(Format('%d', [Hex])); end;
function ConvertToHexAsString(i : Byte):string; begin Result := IntToHex(i, 2); end;
function ConvertToHexAsString(i : Word):string; begin Result := IntToHex(i, 4); end;
function ConvertToHexAsString(i : DWORD):string; begin Result := IntToHex(i, 8); end;
function ConvertToHexAsString(i : UInt64):string; begin Result := IntToHex(i, 16); end;
procedure TForm1.btn1Click(Sender: TObject); var sLine : string; i : Integer; begin //test ConvertToInt mmo1.Lines.Add(IntToStr(ConvertToInt($FF)));
//test ConvertToHexAsString mmo1.Lines.Add(ConvertToHexAsString(11111111111111111111));
//test add byte by byte with space between them into memo ZeroMemory(@sLine, SizeOf(sLine)); for i := 0 to Length(arrX)-1 do sLine := sLine + ' ' + ConvertToHexAsString(ArrX[i]); mmo1.Lines.Add(sLine); end;
end.
طبقت على XE7
والسلام عليكم
|