【问题标题】:Offset as hex from textbox从文本框中偏移为十六进制
【发布时间】:2010-02-09 13:01:54
【问题描述】:

我正在使用lpBaseAddress : IntPtr

但是...我需要输入十六进制值 :-/ 就像一个正常的偏移量

在 VB 上可能是这样的:

offset = CLng("&H" + text)

所以我需要从文本框中获取一个值并在 C#(或 Nemerle ^_)上使用同样的魔法

【问题讨论】:

    标签: c# offset nemerle


    【解决方案1】:

    如果你只想解析十六进制:

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

    我在这里使用了long 来说明,因为IntPtr 可能是32/64。

    【讨论】:

    • 显示了什么? :S [DllImport("kernel32.dll",SetLastError = true)] static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte [] lpBuffer, uint nSize, out int lpNumberOfBytesWritten); Pinvoke 告诉它必须是 intptr :-S
    【解决方案2】:
    offset = System.Convert.ToInt64(this.yourTextBox.Text, 16);
    

    您确定需要 Int64 (Long) 而不仅仅是 Int32 (Int)?如果您是 VB6 编码员,您需要的是 Int32 (Int),而不是 Long。

    【讨论】:

    • @nCdy:我的错,对不起。我之所以问,是因为我将偏移量与 Ints 相关联,而 VB6 开发人员甚至在 .NET 中也倾向于使用 Longs,因为他们从未真正关注过新框架。
    猜你喜欢
    • 2012-03-04
    • 2012-07-12
    • 1970-01-01
    • 2020-06-30
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多