【问题标题】:Java - Sending unsigned bytes through TCP connectionJava - 通过 TCP 连接发送无符号字节
【发布时间】:2011-08-08 18:58:19
【问题描述】:

由于 Java 字节是有符号值,并且我正在尝试与期望字节无符号的 C# 程序建立 TCP 套接字连接。

我无法更改 C# 部分的代码。

如何使用 Java 以正确的格式发送这些字节。

谢谢

【问题讨论】:

    标签: java tcp unsigned signed


    【解决方案1】:

    不,Java 字节是 有符号 值。通常 C# 字节是无符号。 (您需要 sbyte 类型来引用有符号字节;我不记得上次使用 sbyte 是什么时候了。)

    但是,就通过网络传输数据而言,这根本不重要 - 通常您只需发送您拥有的任何二进制数据(例如您从文件中读取的内容),双方都会做正确的事。 Java 端值为 -1 的字节将作为 C# 端值为 255 的字节传入。

    如果您能告诉我们更多确切您正在尝试做什么(数据是什么),我们可能会提供更多帮助,但我强烈怀疑您可以忽略这种情况。

    【讨论】:

    • 我将音频(字节数组)从 Android(Java,有符号字节)发送到 Windows(C# 字节无符号),我应该担心吗?
    • @user924:不,没关系。
    【解决方案2】:

    没关系。这些数字只是位串,就位而言,它们是有符号还是无符号的事实并不重要。而且是传输的位,因此所有有符号/无符号信息都无关紧要。

    1100101010101111 仍然是 1100101010101111,无论有符号/无符号。

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多