代码之家  ›  专栏  ›  技术社区  ›  StuckInPhDNoMore

Int-to-Byte和back-to-Int不返回相同的值

  •  0
  • StuckInPhDNoMore  · 技术社区  · 2 年前

    我必须通过网络发送一个整数值数组。它们只能作为字节数组发送 byte[] .

    但问题是,当另一个设备接收到的字节(当转换回int时)没有给出相同的值?

    下面的代码及其输出是我面临的问题

    int x = GetUniqueID();
    Debug.Log("Int value is: " + x.ToString());
    byte b = (byte)x;
    Debug.Log("Converted to byte is: " + b.ToString());
    int y = (int)b;
    Debug.Log("Converted back to int is: " + y.ToString());
    
    private int GetUniqueID()
        {
            int x;
            x = Random.Range(0, 1000);
    
            return x;
        }
    
    

    下面是上述代码的控制台输出(运行两次):

    enter image description here

    为什么int转换为byte后不返回原始值?

    1 回复  |  直到 2 年前
        1
  •  1
  •   TimS    2 年前

    你在投一个 int ,即32位或4字节 byte 这是一个单字节。这会导致您的值被截断,这就是为什么您在示例中看到它从344减少到88。

    相反,尝试使用 BitConverter 类来转换 整数 变成一个 byte[]

    byte[] b = BitConverter.GetBytes(x)