【发布时间】:2021-10-01 22:55:59
【问题描述】:
我正在实现一个从 Visual Basic.Net 到 C# 的数字转换程序。这是将数字从二进制转换为十六进制的原始代码。
Public Function BinToHex(ByVal BinStr As String) As String
Dim HexStr As String
HexStr = ""
Dim i As Integer
For i = 1 To Len(BinStr) Step 4
HexStr = HexStr & DecToHex(BinToDec(Mid(BinStr, i, 4)))
Next i
Return HexStr
End Function
在 C# 中我有以下代码:
public string BinToHex(string BinStr) {
string HexStr;
HexStr = "";
int i;
var loopTo = BinStr.Length;
for (i = 1; i <= loopTo; i +=4){
HexStr = HexStr + DecToHex(BinToDec(BinStr.Substring((i - 1), 4)));
}
return HexStr;
}
这段代码使用了 C# 的 Substring 函数,知道它的处理方式与 Basic 的 mid 函数不同,我们必须从用作函数参数的变量中减去 1。但是执行该函数,对于它接收到的任何值,它都会引发以下错误。错误海报是这样的:
【问题讨论】:
-
请不要将代码或错误包含在图像中。复制异常文本并将其作为文本包含。
-
你能保证字符串的长度是四的偶数倍吗?如果没有,你会得到错误。