指针遍历数据

    技术2024-10-18  5

    指针遍历数据

    通过汇编的学习,越来越清楚地知道了无论什么东西在计算机其实就是二进制罢了,究竟代表什么,这取决你如何去看待它。

    用一道指针题来说明这个问题吧

    这一堆数据中存储了角色的血值信息,假设血值的类型为int类型,值为100(10进制) 请列出所有可能的值以及该值对应的地址

    char arr[100] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x07,0x09, 0x00,0x20,0x10,0x03,0x03,0x0C,0x00,0x00,0x44,0x00, 0x00,0x33,0x00,0x47,0x0C,0x0E,0x00,0x0D,0x00,0x11, 0x00,0x00,0x00,0x02,0x64,0x00,0x00,0x00,0xAA,0x00, 0x00,0x00,0x64,0x10,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x02,0x00,0x74,0x0F,0x41,0x00,0x00,0x00, 0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0A,0x00, 0x00,0x02,0x74,0x0F,0x41,0x00,0x06,0x08,0x00,0x00, 0x00,0x00,0x00,0x64,0x00,0x0F,0x00,0x00,0x0D,0x00, 0x00,0x00,0x23,0x00,0x00,0x64,0x00,0x00,0x64,0x00 };

    这个的难点在于一个char型数组如何看成int。只要理解了我们想要二进制是什么就是什么的思想,这其实是一个非常简单的问题。

    int* p = 0; char* q = arr; for (int i = 0; i < 96; i++) { p = (int*)q; if (*p == 100) { printf("%x\n", p); } q = (char*)p; q++; }

    源码一上来其实非常的简单,本身不是很难。只是体现了我们如何看待数据这么一回事。

    Processed: 0.033, SQL: 9