gpt4 book ai didi

Java 移位字节如何将数据发送到 websocket

转载 作者:行者123 更新时间:2023-12-01 12:30:04 26 4
gpt4 key购买 nike

    op.write((byte)((len >> 56) & (byte)255));
op.write((byte)((len >> 48) & (byte)255));
op.write((byte)((len >> 40) & (byte)255));
op.write((byte)((len >> 32) & (byte)255));
op.write((byte)((len >> 24) & (byte)255));
op.write((byte)((len >> 16) & (byte)255));
op.write((byte)((len >> 8) & (byte)255));
op.write((byte)(len & 255));

我试图理解当有效负载超过 65536 字节时向 websocket 发送数据的示例中这种转变意味着什么,为什么转变从 56 字节开始到 8 字节?这样做的目的是什么?

按此顺序打印时得到以下结果:

0
1
12
175
0
1
12
175

我如何理解这是否是正确的值?因为我在 RFC 或文档中找不到对此的详细解释

最佳答案

移位操作的是位,而不是字节。仅当 len 的大小超过 32 位时,一次移位超过 32 位才有意义。此代码向对等方发送一个 8 字节整数值,因此 len 必须是 64 位 long

数值0 1 12 175 0 1 12 175是字节序列(十六进制)00 01 0C AF 00 01 0C AF。如果您颠倒移位并将它们连接在一起:

long len = (((long)0) << 56) |
(((long)1) << 48) |
(((long)12) << 40)|
(((long)175) << 32)|
(((long)0) << 24) |
(((long)1) << 16) |
(((long)12) << 8) |
(long)175;

最终得到 295420735589551。这是您原来的 len 值吗?如果不是,那么您的源 len 值一开始就不正确。

关于Java 移位字节如何将数据发送到 websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com