استفسار بخصوص تحويل قيم الهيكس - بى سات - 09-10-2014
استفسار بخصوص تحويل قيم الهيكس الى ارقام صحيحه بمعنى لو لدى مثلا ففى اديت قيمه d82a بالهيكس يكون الناتج لها داخل اديت 2
10968
وعمليه وعكسها لو امكن
استفسار بخصوص تحويل قيم الهيكس - paix144 - 09-10-2014
السلام عليكم
كود : Edit2.Text:=[color=Red]IntToHex[/color](StrToInt(Edit1.Text),1)
استفسار بخصوص تحويل قيم الهيكس - didrosoft - 09-10-2014
بعد اذن الاخ الفاضل بي سات صاحب الفضل في طرح هذه الاسئلة المهمة اسمحلي اخي ان اسئل
اخي الفاضل paix144 هل ممكن طريقة تجعل كتابة البيانات بالهكس تفصل بينها مسافة بشكل الي ...وللتوصيح مثلا حين نكتب ffffff تصبح داخل البرنامج بهذا التنسيق ff ff ff .....المطلوب طريقة اضافة الفراغ بين القيم دون ان يسبب مشاكل برمجية وحسابية
استفسار بخصوص تحويل قيم الهيكس - بى سات - 09-10-2014
paix144 كتب :السلام عليكم
كود : Edit2.Text:=[COLOR=Red]IntToHex[/COLOR](StrToInt(Edit1.Text),1)
شكرا اخى الغالى
استفسار بخصوص تحويل قيم الهيكس - بى سات - 09-10-2014
didrosoft كتب :بعد اذن الاخ الفاضل بي سات صاحب الفضل في طرح هذه الاسئلة المهمة اسمحلي اخي ان اسئل
اخي الفاضل paix144 هل ممكن طريقة تجعل كتابة البيانات بالهكس تفصل بينها مسافة بشكل الي ...وللتوصيح مثلا حين نكتب ffffff تصبح داخل البرنامج بهذا التنسيق ff ff ff .....المطلوب طريقة اضافة الفراغ بين القيم دون ان يسبب مشاكل برمجية وحسابية العمل اليدوى بالهيكس جيد ولاكن من الواضح تحويله برمجيا صعب
سنحاول ليوفقنا الله
استفسار بخصوص تحويل قيم الهيكس - didrosoft - 09-10-2014
paix144 كتب :السلام عليكم
كود : edit2.text:=[color=red]inttohex[/color](strtoint(edit1.text),1)
اخي هذا الكود لا يعمل بعد التجريب
استفسار بخصوص تحويل قيم الهيكس - SMP3 - 09-10-2014
إقتباس :اخي هذا الكود لا يعمل بعد التجريب
يجب اضافة علامة الدولار 
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;
استفسار بخصوص تحويل قيم الهيكس - ALmuhhnad - 10-10-2014
طريقة آخرى بإستعمال 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
والسلام عليكم
|