数据请求之:字节集拆分与合并
本帖最后由 朕的 于 2026-3-10 17:22 编辑没怎么搞过 TCP和WebSocket的文件传输,今天试了下,好像数据包大小有限制,
也没找到什么直接能用发方法,自己就写了一个。
<火山程序 类型 = "通常" 版本 = 1 />
方法 _字节集_拆分到数组 <公开 类型 = 整数 返回值注释 = "返回:字节集数组类 成员数" 折叠>
参数 字节集数据 <类型 = 字节集类>
参数 保存到字节集数组 <类型 = 字节集数组类 @需求类型 = 可写入变量>
参数 拆分大小 <类型 = 整数 注释 = "63字节*1024" @默认值 = 64512>
参数 前缀标识 <类型 = 文本型 注释 = "可用于数据封包标识" @默认值 = 空对象>
{
变量 分割数量 <类型 = 整数>
变量 前缀字节集 <类型 = 字节集类>
分割数量 = 字节集数据.取字节集长度 () / 拆分大小
如果真 (字节集数据.取字节集长度 () % 拆分大小 > 0)
{
分割数量 = 分割数量 + 1
}
计次循环 (分割数量)
{
如果 (取循环索引 () < 分割数量)
{
保存到字节集数组.加入成员 (字节集数据.取字节集中间 (取循环索引 () * 拆分大小, 拆分大小))
}
否则
{
保存到字节集数组.加入成员 (字节集数据.取字节集中间 (取循环索引 () * 拆分大小, 字节集数据.取字节集长度 () - (分割数量 - 1) * 拆分大小))
}
}
如果真 (前缀标识 != 空对象)
{
保存到字节集数组.枚举循环 ()
{
保存到字节集数组.取枚举值 ().插入字节集 (0, 文本到UTF8 (前缀标识, ))
}
}
返回 (保存到字节集数组.取成员数 ())
}
方法 _字节集_合并从数组到字节集 <公开 类型 = 字节集类 折叠>
参数 拆分后的字节集数组 <类型 = 字节集数组类>
参数 原前缀标识 <类型 = 文本型 注释 = "可用于数据封包标识" @默认值 = 空对象>
{
变量 结果 <类型 = 字节集类>
拆分后的字节集数组.枚举循环 ()
{
如果 (原前缀标识 != 空对象)
{
变量 "//带前缀数据" <类型 = 字节集类>
// 带前缀数据 = 拆分后的字节集数组.取枚举值 ()
// 字节集替换 (带前缀数据, 0, 取字节集长度 (文本到UTF8 (前缀标识, )), 取空白字节集 (0))
子字节集替换 (拆分后的字节集数组.取枚举值 (), 文本到UTF8 (原前缀标识, ), 取空白字节集 (0), 0, 1)
结果.添加字节集 (拆分后的字节集数组.取枚举值 ())
}
否则
{
结果.添加字节集 (拆分后的字节集数组.取枚举值 ())
}
}
返回 (结果)
}
没必要,接收时候合并即可 cdmmye 发表于 2026-3-10 19:06
没必要,接收时候合并即可
没有标记的情况下,没法知道哪个子包是哪个包的 包是连续的,连续组合就不会出错 cdmmye 发表于 2026-3-11 18:42
包是连续的,连续组合就不会出错
没仔细研究过,有时间再试试
页:
[1]