2012-09-18 15 views
0

繼續從this question開始,我需要將某些內存值設置爲字符串,而不是long。我注意到使用Cheat Engine時,如果通過瀏覽內存區域將地址值設置爲字符串,則會有一個整數值,例如「6513249」爲「abc」。將字符串轉換爲長,用於C#中的內存編輯

我該如何將字符串轉換爲這種形式,作爲長期使用?

感謝。

回答

2

使用Encoding.GetBytes將字符串轉換爲字節數組並使用正確的編碼,並且直接寫入字節,則可能不需要轉換爲長整型。

如果您必須轉換爲長整數 - 請確保您瞭解endiannes以瞭解應首先處理哪些字節,然後再用Encoding.GetBytes找出編碼並將字符(可能包括代理對)轉換爲字節數組並將長整型值通過在字節上使用移位運算符(>><<)每8個字節中。在MemeoryStream中打包結果字節數組可能更容易,並且讀取長整型值會更容易。

+0

好吧,現在得到某個地方。使用GetBytes返回「abc」爲「610062006300」而不是「6513249」。此外,我有一些值(如「10」),我需要字節數組等於,如果這是有道理的。在字節數組中輸入字符串「10」得到「3130」,我需要它是原始值。 – Kaikz

+0

幾乎忘記了:我還需要在設置一個值之前將地址清零,我將如何使用它? – Kaikz

+0

@Kaikz,無論你在說什麼都沒有多大意義,因爲你隨機使用字符串作爲整數的字符串,十進制或十六進制表示。請弄清楚你需要什麼編碼,並理清你正在編寫的內容。使用正確編碼的GetBytes可能只需將字符串轉換爲字節即可,數字不需要轉換。不要忘記,祕籍通常會變得過時 - 所以請確保您的作弊代碼很容易配置:) –