如何制作字符的位掩码?

时间:2019-01-08 14:21:40

标签: c char

我有字符value = "ab",如何对其进行转换以便获得以下位掩码int mask = 0xab?是否可以制作int mask = 0x(value)或类似的东西。

3 个答案:

答案 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;
}