San场 2023/5/23 17:03:01 San场 2023/5/23 17:03:12 San场 2023/5/23 17:03:23 San场 2023/5/23 17:03:34 程佳俊 2023/5/23 17:17:49 San场 2023/5/23 20:10:44 你电脑我用用。我找了个java的 San场 2023/5/23 20:11:50 San场 2023/5/23 20:12:11 San场 2023/5/23 20:12:23 San场 2023/5/23 20:12:45 San场 2023/5/23 20:13:03 San场 2023/5/23 20:13:25 对方已成功接收了你发送的离线文件“新建文本文档.txt”(4.39KB)。 程佳俊 2023/5/23 20:30:15 程佳俊 2023/5/23 20:30:16 你已重新下载文件“BER.java”(4.70KB)。 程佳俊 2023/5/23 21:20:01 偷老子东西 San场 2023/5/23 21:21:34 你快回来,出了解决不了的问题 程佳俊 2023/5/23 21:25:04 我的? 程佳俊 2023/5/23 22:27:30 //整数编码 public byte[] berINBianma(int i){ byte[] bytes = ByteBuffer.allocate(4).putInt(i).array();// int 类型的变量 i 转换成 byte 数组 int index = 0; while(index < bytes.length && bytes[index]==0){ index++; }// 寻找数组中第一个非0字节的位置 byte[] result = new byte[bytes.length - index + 2];//创建一个新的数组,数组长度为bytes的非零字节数+2 result[0] = 0x02; //Integer的标识 result[1] = (byte)(bytes.length - index); //长度 System.arraycopy(bytes, index, result, 2, bytes.length - index); //通过arraycopy的方法将bytes数组中非零字节的部分复制到result数组中 return result; }改为python语言编写
时间: 2023-12-14 22:37:43 浏览: 80
以下是将给定 Java 代码转换为 Python 代码的结果:
```
import struct
def berINBianma(i):
bytes = struct.pack('>i', i) # 将 int 类型的变量 i 转换成 byte 数组
index = 0
while index < len(bytes) and bytes[index] == 0:
index += 1 # 寻找数组中第一个非0字节的位置
result = bytearray(len(bytes) - index + 2) # 创建一个新的字节数组,数组长度为bytes的非零字节数+2
result[0] = 0x02 # Integer 的标识
result[1] = len(bytes) - index # 长度
result[2:] = bytes[index:] # 将bytes数组中非零字节的部分复制到result数组中
return bytes(result)
```
在 Python 中,我们使用了 `struct` 模块的 `pack` 函数将整数值转换为字节数组。然后,我们使用 Python 的 `bytearray` 类型来创建新的字节数组,并使用切片操作将原始字节数组的非零字节部分复制到新数组中。此外,我们还使用了 `bytes` 函数来将 `bytearray` 对象转换回 `bytes` 对象。
阅读全文