让我先描述一下情景。
我尝试做的是将字符串转换为十六进制。
例如,让我们说一个由1s和1组成的二进制字符串。 0s即。 110011, 将它们配对为4位数组(此处为8位数加两个0),分别将每对转换为十六进制,然后连接十六进制字符串结果以获得输出。
对于八进制,与二进制相同,但输入八进制字符串被分成3位数组
对于ASCII,每个数字的等效字节转换为十六进制并存储。
现在问题是我应该怎么做十进制字符串输入?
- 我应该考虑使用与ASCII相同的方法吗? - 还有另一种方式吗?
编辑: -
我不只是转换数字,而是转换数字数组。
二进制字符串 - 4位数组&然后将它们转换为hex 八进制字符串 - 3位数组和1位数组然后将它们转换为hex ASCII字符串 - 每个字符的等效字节&然后将其转换为十六进制
因此长度不是问题所在。问题是如何转换十进制字符串(我应该使用哪种配对/分组)
注意:我已经知道转换八进制,二进制和&十进制数到十六进制。这部分更多的是关于如何将十进制字符串分成组"以便将每个十进制组分别转换为十六进制,然后连接结果十六进制。
答案 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,就像您已经在做的那样。
如果您想以其他方式执行此操作,则需要为程序引入新逻辑。这取决于您的个人偏好。