【问题标题】:Is there any fast way to convert List<byte> to hex string? [duplicate]有什么快速的方法可以将 List<byte> 转换为十六进制字符串? [复制]
【发布时间】:2013-01-30 03:41:14
【问题描述】:

可能重复:
How do you convert Byte Array to Hexadecimal String, and vice versa?

我有一个列表,我需要将其转换为十六进制字符串。我觉得我转换的方式很安静。

List<byte> TRIGGER_POL = Data.GetRange(23, 1);
byte[] TRIGGER_POL_temp = new byte[TRIGGER_POL.Count];
TRIGGER_POL_temp[0] = TRIGGER_POL[0];
string TRIGGER_POL_hx = BitConverter.ToString(TRIGGER_POL_temp, 0).Replace("-", string.Empty);

有没有更快、更有效的方法来做到这一点?

谢谢..

【问题讨论】:

  • 不知道它是否更快,但通常当您想将字节数组转换为字符串时,您使用 Encoding..GetString.
  • 因此您希望整个数组为 1 个字符串或只是字符串列表中的字节(例如:byte(233) = "233")
  • @sa_ddam213,我需要将列表字节数组转换为十六进制字符串。抱歉,在转换为十六进制字符串之前我忘了提及。例如:T[255 0] = 0xF0

标签: c# .net c#-4.0 c#-3.0


【解决方案1】:

有很多方法可以做到这一点,但这个可能对你有用

 List<string> hexStrings = TRIGGER_POL.Select(b => BitConverter.ToString(new byte[]{b})).ToList();

或者如果你只想要 1 个字符串

string hex = BitConverter.ToString(TRIGGER_POL.ToArray());

【讨论】:

  • 第二次转换TRIGGER_POL.ToArray() 效果很好,减少了行数.. 谢谢
【解决方案2】:

我个人最喜欢的做法是一个鲜为人知的深埋在 .NET 中的类 SoapHexBinary

byte[] tmp1 = SoapHexBinary.Parse("DEADBEEF"); //tmp1 now equals the array {0xDE, 0xAD, 0xBE, 0xEF}
string tmp2 = new SoapHexBinary(tmp1).ToString(); //tmp2 now equals "DEADBEEF"

【讨论】:

  • 谢谢我不知道这门课..
【解决方案3】:

试试这个:

public static string ConvertToHex(byte[] bytes)
{
    SoapHexBinary hexBin = new SoapHexBinary(bytes);
    return hexBin.ToString();
}
return ConvertToHex(TRIGGER_POL.ToArray());

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2018-01-22
    • 2019-10-03
    • 2021-08-11
    相关资源
    最近更新 更多