gpt4 book ai didi

Ruby:4 字节数组到 int32

转载 作者:数据小太阳 更新时间:2023-10-29 07:28:39 26 4
gpt4 key购买 nike

TCPSocket读取了4个字节(实际上socket返回的是一个字符串,然后我调用.bytes得到一个数组)。现在需要将它们转换为 int32 big endian。

或者可能是 TCPSocket 有一些方法可以立即读取 int32?

最佳答案

您可以使用 String#unpack .参数指示转换的类型。 “N” 在下面使用,表示“32 位无符号网络(大端)字节顺序”。查看所有选项的链接。

"\x00\x00\x00\x01".unpack("N")
# => [1]

"\x00\x00\x00\xFF".unpack("N")
# => [255]

注意结果是一个Array,所以应用[0].first 来获得Fixnum .


Array#pack 的原始答案将字节数组转换为二进制字符串:

您可以使用 Array#pack

# unsigned 32-bit integer (big endian)
bytes.pack('L>*')

# signed 32-bit integer (big endian)
bytes.pack('l>*')

也许你会发现 N 指令很有用,它代表“网络字节顺序”

# 32-bit unsigned, network (big-endian) byte order
bytes.pack('N*')

关于Ruby:4 字节数组到 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824024/

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