2010-02-09 18 views
1

textbox J'utilise lpBaseAddress : IntPtrde crédits compensatoires, comme hex

mais ... je dois entrer la valeur hexadécimale: -/comme un décalage normale

comme sur VB qui pourrait être quelque chose comme:

offset = CLng("&H" + text) 

donc je dois prendre une valeur et de faire de même textbox magie sur C# (ou Nemerle^_)

Répondre

1

Si vous voulez juste pour analyser hex:

string hex = "0a12cc"; 
long ptr = Convert.ToInt64(hex, 16); 
IntPtr newPtr = new IntPtr(ptr); 

Je l'ai utilisé long ici pour illustration, comme IntPtr pourrait être 32/64.

+0

Je pense que j'ai besoin intptr .... – Cynede

+0

@ nCdy - il montre «IntPtr» ...? –

+0

quels spectacles? : S [DllImport ("kernel32.dll", SetLastError = true)] statique extern bool WriteProcessMemory (IntPtr hProcess, IntPtr lpBaseAddress, octet [] lpBuffer, uint nSize, out int lpNumberOfBytesWritten); Pinvoke indique qu'il doit être intptr: -S – Cynede

1
offset = System.Convert.ToInt64(this.yourTextBox.Text, 16); 

Êtes-vous sûr de vouloir utiliser un Int64 (Long) et pas seulement un Int32 (Int)? Si vous êtes un codeur VB6, Int32 (Int) est ce que vous cherchez, pas long.

+0

Je ne suis pas vb codeur :) et je ne sais pas VB – Cynede

+0

@ nCdy: Mon mauvais, désolé. Je viens de demander parce que j'associe les offsets avec Ints, et les développeurs VB6 ont tendance à utiliser Longs même dans .NET, parce qu'ils ne regardent jamais vraiment le nouveau framework. – Bobby