如何为字符串或Char分配唯一的int值?

时间:2019-01-23 13:50:47

标签: c mapping

我想给字符分配整数值。其中“ C”的值最小,而“ B”的值最大。

还有比映射更好的东西吗?

例如:-'C'= 100,'D'= 101,'E'= 102 ....'B'= 126。与映射相比,还有更好的方法吗? 如果输入字符串为“ BYE”,则输出应为351(因为'B'= 126,'Y'= 123,E ='102')。

2 个答案:

答案 0 :(得分:1)

如果ASCII编码不符合您的要求,则必须实现自己的翻译功能,例如:

struct TranslationMapRecord
{
   char character;
   int code;
};

struct TranslationMapRecord map[] =
{
 { 'C', 100 },
 { 'D', 101 },
...
 { 'B', 126 }
}

int translate(char c)
{
  int i;
  for (i = 0; i < (sizeof(map)/sizeof(map[0]); ++i)
  {
    if (map[i].character == c)
      return map[i].code;
  }
  return 0;
}

答案 1 :(得分:1)

您可以使用指定的数组初始化程序:

// UCHAR_MAX is from header <limits.h>
int const map[UCHAR_MAX] = {
    ['C'] = 100,
    ['D'] = 101,
    ['B'] = 126,
};

未分配的字符的值为零。

然后您将获得带有表达式的单个值:

int value = map[(unsigned char)character];