在内存中搜索字符串

发布于 2024-12-02 13:02:06 字数 796 浏览 1 评论 0原文

我正在尝试让此代码正常工作,来自 此处

    char *mem = (unsigned char *) 0xF0000;
    int length, i;
    unsigned char checksum;
    while ((unsigned int) mem < 0x100000) {
        if (mem[0] == '_' && mem[1] == 'S' && mem[2] == 'M' && mem[3] == '_') {
            length = mem[5];
            checksum = 0;
            for(i = 0; i < length; i++) {
                checksum += mem[i];
            }
            if(checksum == 0) break;
        }
        mem += 16;
}

有一些类型错误,例如 cant使用 unsigned char* 初始化 char*。

当我尝试将 char * 替换为 unsigned char * int 第一行时,我无法使用 [] 表示法,如何在此代码中使用 memcmp

I'm trying to get this code to work, from here

    char *mem = (unsigned char *) 0xF0000;
    int length, i;
    unsigned char checksum;
    while ((unsigned int) mem < 0x100000) {
        if (mem[0] == '_' && mem[1] == 'S' && mem[2] == 'M' && mem[3] == '_') {
            length = mem[5];
            checksum = 0;
            for(i = 0; i < length; i++) {
                checksum += mem[i];
            }
            if(checksum == 0) break;
        }
        mem += 16;
}

There are some type errors, like cant init char* with unsigned char*.

when I try to replace char * with unsigned char * int first line I cant use [] notation, how can I use memcmp with this code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苦行僧 2024-12-09 13:02:06

在第一行中,您转换为 unsigned char*,但尝试分配给 char*。为什么不直接转换为 char*

我假设您正在处理一些嵌入式系统代码,因为在多任务操作系统中,仅访问硬编码的内存位置就会导致程序崩溃。

In the first line, you cast to unsigned char*, but try assigning to char*. Why not cast to char* directly?

I'm assuming you are working on some embedded system code, since with multitasking operating systems, simply accessing hard-coded memory locations will cause your program to crash.

她比我温柔 2024-12-09 13:02:06

该代码无法工作,因为在 EFI 机器上查找 smbios 入口点结构地址的方法不正确,

The code failed to work because it is incorrect way of finding smbios entry point structure address on an EFI machine,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文