2014-01-18 53 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位無符號整數(.NET中的ulong)。

您必須將文本框的文本轉換爲數字,以便您可以將它用作方法中的參數(您已經在爲數組變量?)。

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和參數2:無法從bytep [轉換爲字符串。我是一個絕對的初學者。感謝您的耐心和時間。 – user3206153