比较十六进制值中的n个字符的序列

|| 我基本上是在尝试将令牌(字符串)与十六进制数据类型进行比较! 例:
#include<stdio.h>
#include<string.h>

int main(int argc, char *argv[]) {

    char* token =\"Hello\";
    int hex = 0x2F;


    if(strncmp(token, \"Hil\", 3)==0){
        printf(\"Token founde\"); //works!
    }else{
        printf(\"sorry seems to be the hardest word\");
    }

}
当然,这确实有效。 我正在比较2个至少包含n个字符的字符串...没问题。 但是现在我想用十六进制值而不是字符串来做同样的事情! 像这样:
 int hex = 0x2F;


    if(strncmp((char*)hex, \"0x\", 2)==0){
                printf(\"Token founde\"); //works!
            }else{
                printf(\"sorry seems to be the hardest word\");
            }

        }
由于strncmp仅比较字符串,因此我尝试将十六进制值转换为char * ... 它根本不起作用。 我到处都搜索过...甚至在我的《 C语言》一书中……但我不知道该如何解决这个问题。 在Java中,我会使用startsWith等之类的东西,但是我不知道c中是否有一个熟悉的函数可能具有相同的效果。     
已邀请:
嗯,我不确定这是否是您想要的,但是现在您正在将十六进制的值转换为(最肯定是无效的)地址。要执行您想做的事情,您必须输入地址:
strncmp((char*)&hex, \"0x\", 2)
,但我不建议这样做。 我建议您先将十六进制转换为字符串,然后进行比较:
char buf[256];
snprintf(buf, 256, \"0x%x\", hex);
if(strncmp(buf, \"0x\", 2)==0){
    
您可以使用sprintf:
char hexVal[3];
sprintf(hexVal, \"%02X\", hex);
if(strncmp(token, hexVal, 3)==0){
    

要回复问题请先登录注册