如何解决比较十六进制值中的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,2)==0){
,您可以使用sprintf:
char hexVal[3];
sprintf(hexVal,\"%02X\",hex);
if(strncmp(token,hexVal,3)==0){
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。