【问题标题】:Issue with Substring function in C# [duplicate]C#中的子字符串函数问题[重复]
【发布时间】: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。但是执行该函数,对于它接收到的任何值,它都会引发以下错误。错误海报是这样的:

【问题讨论】:

  • 请不要将代码或错误包含在图像中。复制异常文本并将其作为文本包含。
  • 你能保证字符串的长度是四的偶数倍吗?如果没有,你会得到错误。

标签: c# substring


【解决方案1】:

正如substring docs所说,你不能延长字符串长度,所以你必须检查BinStr.Length % 4 == 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2015-03-27
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多