我有字符value = "ab"
,如何对其进行转换以便获得以下位掩码int mask = 0xab
?是否可以制作int mask = 0x(value)
或类似的东西。
答案 0 :(得分:5)
'ab'
是一个多字符常量。它确切地是由实现定义的,因此不会在不同的编译器上给您带来相同的结果。不能保证结果以任何方式都有意义。您可能想要的是这样:
const unsigned char *a = "ab";
现在它是一个字符串文字,您可以获取其地址,并将其分配给指针。您可以这样分割:
char b = a[0];
char c = a[1];
答案 1 :(得分:2)
我想你想要这个:
根据您的评论,将从COM端口0 1 b8
读取的3个字符转换为数字0x1b8
。
让我们假设:
int c1 = 0;
int c2 = 0x1;
int c3 = 0xb8;
然后可以通过以下方式获取所需的电话号码:
int numberyouwant = (c1 << 16) | (c2 << 8) | c3;
答案 2 :(得分:0)
您可能想要这样:
#include <stdio.h>
#include <string.h>
int main() {
char buffer[] = "ab" ;
int x = strtol(buffer, NULL, 16);
printf("x in hexadecimal = %x\nx in decimal = %d\n", x, x);
return 0;
}
或者更复杂一些,如果您只想在字符串中间选择2个字符:
#include <stdio.h>
#include <string.h>
int main() {
char buffer[] = "ab12345" ;
char tempbuffer[3];
tempbuffer[0] = buffer[0];
tempbuffer[1] = buffer[1];
tempbuffer[2] = 0;
int x = strtol(tempbuffer, NULL, 16);
printf("x in hexadecimal = %x\nx in decimal = %d\n", x, x);
return 0;
}