2014-01-18 2 views
0

Я пытаюсь сделать приложение, чтобы пользователи могли вводить адрес памяти в текстовое поле.Загрузка адреса памяти из текстового поля

Ввод в текстовое поле: «0x0060EBDC».

И я хочу, чтобы текст текстового поля, чтобы вставить здесь:

Android.SetMemory(''''TEXTBOXTEXT HERE(0x0060EBDC)'''', userinput2); 

Я получил это работает для байтов («userinput2»), но не могу заставить его работать адрес памяти.

Я не хочу, чтобы он был преобразован или что-то еще. Просто от текстового поля до кода.

Текущий код:

// textbox23 памяти значения // textbox4

var value = textBox4.Text; 

var value = textBox4.Text; 

var array = value 
    .Split(',') 
    .Select(i => i.Trim().Replace("0x", "")) 
    .Select(i => Convert.ToByte(i, 16)) 
    .ToArray(); 

Android.SetMemory(0x0060EBDC, array); 

Так что я хочу 0x0060EBDC быть заменено userinputted текстового поля "0x00100101".

ответ

2

Первым параметром вашего метода SetMemory является просто 64-разрядное целое без знака (ulong в .NET).

Вы должны преобразовать текст текстового поля в число, поэтому вы можете использовать его как параметр в своем методе (который вы уже используете для переменной массива?).

ulong address = Convert.ToUInt64(textbox.Text, 16); 
Android.SetMemory(address, array); 

Convert.ToUInt64 будет автоматически обрабатывать форматы ввода и без префикса 0x/0X. Если вы хотите сделать правильную проверку ошибок, прежде чем пытаться преобразовать значение текстового поля, используйте вместо этого метод ulong.TryParse(string, out ulong).

Но будьте осторожны, позволяя пользователям получать доступ к произвольным местам памяти.

+0

Благодарим за быстрый ответ. Пробовал это, и он дал мне «Дополнительные символы, не подлежащие анализу, находятся в конце строки». Кроме того, что означает 16? – user3206153

+0

Я не знаю, каков ваш ввод строки, но, возможно, вам нужно сначала вызвать '.Trim()'? Удостоверьтесь, что нет пронумерованных или ведущих символов пробелов. 16 является базой, используемой для преобразования. Вы уже конвертируете свою переменную массива одинаково, поэтому я не уверен, почему у вас возникают проблемы с тем же делом для другой переменной? – knittl

+0

Он выплевывает ошибку, говоря Аргумент 1: Невозможно преобразовать из int [] в ulong и Argument 2: невозможно преобразовать из байта [в строку. Я совершенно новичок в этом. Благодарим за терпение и время. – user3206153

Смежные вопросы