You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Byte[]转String及int转换异常求助:转换后字符串含反斜杠

问题分析与解决方案

核心问题

你完全搞错了数据的传输类型:发送端发送的是int类型的二进制字节数组,不是文本字符串的编码字节,但接收端却用Encoding.Unicode.GetString把二进制整数字节当成字符串编码来解析,这必然得到充满控制字符(显示为\0、\u0001这类转义序列)的无效字符串,后续的字符串处理和int转换自然也会失败。

正确的接收端实现

接收端不需要把字节数组转成字符串,直接将收到的二进制字节转回int即可,逻辑要和发送端对应:

public int EcouterReseau(Socket socketClient)
{
    try
    {
        byte[] data = new byte[4]; // int固定4字节,无需创建1024长度的数组
        int recv = socketClient.Receive(data);
        // 发送端已将字节转为大端(网络字节序),接收端需匹配本地字节序
        if (BitConverter.IsLittleEndian)
            Array.Reverse(data);
        return BitConverter.ToInt32(data, 0);
    }
    catch
    {
        return 0; // 异常时返回默认值0
    }
}

关键说明

  • 发送端逻辑是正确的:将int转为字节数组后反转成大端(网络字节序)发送,这是跨平台二进制数据传输的标准做法。
  • 二进制数值字节不能用文本编码类方法解析,接收端必须使用与发送端对应的二进制转换逻辑。
  • 利用int固定4字节的特性,直接创建对应长度的数组,避免不必要的内存占用。

内容的提问来源于stack exchange,提问作者Graysander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:35:11