-4

我是 C# 新手,需要知道如何将数字转换为字母字符。例如,如果传递了变量 10,我需要将 10 转换为 ND 等等。

if  0 convert to UH
if 02 convert to IJ
if 10 convert to ND
if 45 convert to YH
if 48 convert to OL

我搜索了这个,但找不到我要找的东西。

进一步澄清(对不起,没有充分解释)

我有一个系统传递一个与另一个系统中的 alpha 值等效的数值。我正在开发一个允许这两个系统进行通信的应用程序。所以我需要一个允许我将数值更改为等效 alpha 值的转换表。这样做将使我能够使用正确的参数进行肥皂调用。

4

2 回答 2

9

我看不出任何逻辑,所以我假设映射是外部的。两个选项 - aswitch或字典。

string result;
switch(num) {
    case 0: result = "UH"; break;
    //...
    case 48: result = "OL"; break;
    default: throw new ArgumentOutOfRangeException();
}
Console.WriteLine(result);

或者,字典:

static readonly Dictionary<int,string> map = new Dictionary<int,string> {
    {0, "UH"},
    //...
    {48, "OL"}
};
...
string result;
if(!map.TryGetValue(num, out result))
    throw new ArgumentOutOfRangeException();
Console.WriteLine(result);

编辑:第三个选项 - 一个enum

enum Map {
  UH = 0,
  //...
  OL = 48
}
...
Map mapped = (Map)num;
Console.WriteLine(mapped);
// also, string result = mapped.ToString(); if you really need
于 2013-08-19T19:42:13.157 回答
3

这是一个这样的转换例程。它与您的输出不匹配,因为除了您向我们展示的那些之外,我不知道您使用什么算法和/或值。

const string chars = "ABCDEFGHIJ";
static string ToAlpha(long n)
{
    return new string(n.ToString().Select(x => chars[x - '0']).ToArray());
}

它不是特别快,秘密,(即它是一个简单的代码,很容易弄清楚,所以不要将它用作安全机制)或紧凑,(如结果字符串的长度)但你不相信'不需要这些东西。然而,它非常简单:0A1B等替换。

于 2013-08-19T19:40:40.580 回答