将十进制转换为十六进制

时间:2016-12-20 05:33:49

标签: c#

让我先描述一下情景。

我尝试做的是将字符串转换为十六进制。

例如,让我们说一个由1s和1组成的二进制字符串。 0s即。 110011, 将它们配对为4位数组(此处为8位数加两个0),分别将每对转换为十六进制,然后连接十六进制字符串结果以获得输出。

对于八进制,与二进制相同,但输入八进制字符串被分成3位数组

对于ASCII,每个数字的等效字节转换为十六进制并存储。

现在问题是我应该怎么做十进制字符串输入?

- 我应该考虑使用与ASCII相同的方法吗? - 还有另一种方式吗?

编辑: -

我不只是转换数字,而是转换数字数组。

二进制字符串 - 4位数组&然后将它们转换为hex 八进制字符串 - 3位数组和1位数组然后将它们转换为hex ASCII字符串 - 每个字符的等效字节&然后将其转换为十六进制

因此长度不是问题所在。问题是如何转换十进制字符串(我应该使用哪种配对/分组)

注意:我已经知道转换八进制,二进制和&十进制数到十六进制。这部分更多的是关于如何将十进制字符串分成组"以便将每个十进制组分别转换为十六进制,然后连接结果十六进制。

2 个答案:

答案 0 :(得分:2)

这里没有必要重新发明轮子。

string input = "123456";
string outputHex = int.Parse(input).ToString("X");

// output = "1E240"

甚至更好:

string outputHex = Convert.ToString(int.Parse(input), 16);

此方法还允许您执行其他数字系统:

string outputOct = Convert.ToString(int.Parse(input), 8);
string outputBin = Convert.ToString(int.Parse(input), 2);

答案 1 :(得分:0)

实现它的最简单方法是将数字视为ASCII字符(0-9具有ASCII值48-57)并将其转换为Hex,就像您已经在做的那样。

如果您想以其他方式执行此操作,则需要为程序引入新逻辑。这取决于您的个人偏好。