首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pad字节到数字

Pad字节到数字
EN

Stack Overflow用户
提问于 2018-05-06 00:29:09
回答 1查看 71关注 0票数 1

我试图在服务器和客户端之间分离TCP套接字消息。我尝试这样做的方式是用4个字节启动每条消息,其中包含一个整数,描述消息的大小。问题是,我不知道如何用额外的字节填充这个整数,使其大小为4字节。我在窗户上。

另外,服务器是用节点编写的,但我想我已经计算出了方程的那一面。

下面是我的一些代码,如果有帮助的话:

代码语言:javascript
复制
    $data = JSON->new->utf8->encode({test=>123});
    print $OUTPUT_SOCKET length(encode('UTF-8', $data)); # This needs to be 4 bytes
    print $OUTPUT_SOCKET $data
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-06 00:53:57

代码语言:javascript
复制
sprintf "%32d",  $length  # Padded with spaces
sprintf "%032d", $length  # Padded with zeroes

如果不需要文本格式,请使用以下内容:

代码语言:javascript
复制
pack 'N',  $length   # 32-bit unsigned int (4 bytes) in BE byte order.
pack 'Q>', $length   # 64-bit unsigned int (8 bytes) in BE byte order.

如果采用这种方法,则可以将所有内容组合在一起:

代码语言:javascript
复制
print $SOCK pack 'N/a*', $encoder->encode($data);  # Or Q>/a*
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50195216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档