整数如何映射到4字节?如何在python中将4字节转换成整数

2024-10-01 13:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我将两个整数从Java客户机发送到Python服务器。你知道吗

如何将一个整数映射为0-255之间的4个整数?你知道吗

如何将这4个字节转换回整数??你知道吗

爪哇语:

Socket socket = ((host,port));
//converting intArray to byteArray

int[] intArray = {900, 1200};
ByteBuffer byteBuffer = byteBuffer.allocate(intArray.length*4);
IntBuffer intBuffer = byteBuffer.asIntBuffer();
intBuffer.put(intArray);
byte[] byteArray = byteBuffer.array();


//Sending byteArray via socket to python Server

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.write(byteArray);

Python:

#receiving byteArray from Java

imageDimension = clientsocket.recv(1024)
print(imageDimension)
list = list(imageDimension)
print(list)
output:
b'\x00\x00\x03\x84\x00\x00\x04\xb0'
[0, 0, 3, 132, 0, 0, 4, 176]

在本例中,似乎整数900以某种方式映射到[0,0,3,132]。这是怎么回事?如何将900字节转换为4字节?你知道吗

在python中如何将[0,0,3,132][0,0,4,176]转换回900和1200??你知道吗


Tags: to字节整数socketjavalistprintx00
1条回答
网友
1楼 · 发布于 2024-10-01 13:36:26

在二进制中,3和132分别是0000001110000100。二进制中的900是1110000100。通过连接3和132的二进制表示,可以得到900。你知道吗

00000011
+       10000100
================
0000001110000100

可以使用^{}将字节转换为其他类型。你知道吗

>>> import struct
>>> x = b'\x00\x00\x03\x84\x00\x00\x04\xb0'
>>> struct.unpack(">II", x)
(900, 1200)

">II"format string表示八字节的bytes对象应该被解释为两个四字节整数,具有小的endian字节顺序。你知道吗

相关问题 更多 >