【问题标题】:Best way of converting between byte[] and string?在 byte[] 和 string 之间转换的最佳方式?
【发布时间】:2016-07-19 19:28:11
【问题描述】:

我知道这个问题之前在 stack-overflow 上被问过两次,但这次我要求的是最有保证的方式(不改变数据值的方式)。我想从字符串转换为 byte[] 然后再转换回字符串。我可以使用ByteConverterConvertEncodingBitConverterHttpServerUtility.UrlTokenEncode / HttpServerUtility.UrlTokenDecode以下代码:

string s2 = BitConverter.ToString(bytes);   // 82-C8-EA-17
String[] tempAry = s2.Split('-');
byte[] decBytes2 = new byte[tempAry.Length];
for (int i = 0; i < tempAry.Length; i++)
{
    decBytes2[i] = Convert.ToByte(tempAry[i], 16);
}

或以下代码:

private string ToString(byte[] bytes)
{
    string response = string.Empty;

    foreach (byte b in bytes)
        response += (Char)b;

    return response;
}

如果你仍然没有得到我想要的,我想知道哪种方式有效,哪种方式无效,我想知道应该使用哪种方式。嘿,我更喜欢大小最小的字节数组,因为我将通过网络发送这个数组,并且我将使用前 256 个字节。

【问题讨论】:

标签: c# type-conversion byte bytearray


【解决方案1】:

我想从字符串转换为字节[],然后再转换回字符串。

如果这是您真正想要做的,您只需在发送端使用Encoding.UTF8.GetBytes(string),在接收端使用Encoding.UTF8.GetString(byte[])

private byte[] ToBytes(string message)
{
    return Encoding.UTF8.GetBytes(message);
}

private string ToString(byte[] bytes)
{
    return Encoding.UTF8.GetString(bytes);
}

这将使您可以往返将任何字符串转换为字节,然后以最少的字节数再次转换回字符串。

这将工作来做字节[]到字符串到字节[],对于类似的事情你需要使用像Convert.ToBase64String(byte[])Convert.FromBase64String(string)这样的东西.在格式不正确的 UTF8 字符串上使用 Encoding.UTF8.GetString(byte[]) 可能会导致您在转换中丢失数据。

【讨论】:

    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多