簡體   English   中英

C#從函數獲取返回列表字符串

[英]C# get return list string from function

我在從函數返回列表時遇到問題,我嘗試給出一個變量以從函數獲取返回列表,我得到如下返回:

System.Collections.Generic.List`1 [System.String]

下面是我做的代碼:

我想獲取返回列表,字符串將從函數中拆分為長度64,它將在列表中具有兩個字符串,該字符串將被擴展,下面的代碼只是我設置的示例字符串。

主功能:

static void Main(string[] args)
{
  string test="DD1234455667788999663234324324345434543542252E323431431414313414DD1234455667788999663234324324345434543542252E323431431414313414";
  var test = toHexString(datass);
}

返回函數:

 public static string toHexString(byte[] hexArray)
    {
        string hexString = "";
        List<string> hexlist = new List<string>();

        foreach (byte b in hexArray)
        {
            hexString += string.Format("{0:X2}", b);

            if (hexString.Length > 0 && (hexString.Length % 64) == 0)
            {
                hexlist.Add(hexString);
                hexString = string.Empty;
            }

        }
        return  hexlist.ToString();
    }

更改方法以列出將解決退貨問題

static void Main(string[] args)
{
  string test="DD1234455667788999663234324324345434543542252E323431431414313414DD1234455667788999663234324324345434543542252E323431431414313414";
  var test = toHexString(datass);
}




public static List<string> toHexString(byte[] hexArray)
    {
        string hexString = "";
        List<string> hexlist = new List<string>();

        foreach (byte b in hexArray)
        {
            hexString += string.Format("{0:X2}", b);

            if (hexString.Length > 0 && (hexString.Length % 64) == 0)
            {
                hexlist.Add(hexString);
                hexString = string.Empty;
            }

        }
        return  hexlist.ToString();
    }

首先,在if循環中,您已經訪問了test.Add(hexString); 根據此代碼無法訪問,我相信您正在嘗試的是hexlist.Add(hexString);

其次, hexlist.ToString()將始終返回System.Collections.Generic.List1[System.String]因為ToString無法將列表直接轉換為字符串,並且會返回對象的類型。

您可以使用foreachstringBuilderstring.Join()

問題是,當您在沒有明確重寫ToString()的對象或類上調用ToString() ,它將返回其類型名稱`。

return hexlist.ToString();

由於hexlistList<T>您得到的明顯結果是

System.Collections.Generic.List`1[System.String]

您可以使用類似string.Concat ,或string.Join來回報您想要的結果。 例如

return string.Concat(hexlist);
// or
return string.Join("",hexlist);

或者,如果您希望使用惰性樣式的Linq Enumerable解決方案。 您可以使用這樣的擴展方法來為數組返回可枚舉的塊

// returns enumerable chunks of size, and ignores any partial result
public static IEnumerable<IEnumerable<T>> GetChunks<T>(this T[] source, int size)
{
   for (var i = 0; i < source.Length; i += size)
      yield return source.Skip(i).Take(size);
}

然后你可以寫這樣的方法

public static string GetHex(byte[] bytes, int size)
   => string.Concat(bytes.GetChunks(size).Select(x => $"{x:X2}"));

用法

string test = GetHex(datass,32);

此方法的結果返回一個十六進制字符串,由32個字節的塊組成

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM