Java:从字节数组中删除连续的零段

2023-12-04

例如,假设我想从数组中删除所有长度超过 3 个字节的连续 0 段

byte a[] = {1,2,3,0,1,2,3,0,0,0,0,4};
byte r[] = magic(a);
System.out.println(r);

result

{1,2,3,0,1,2,3,4}

我想做一些类似于 Java 中的正则表达式的事情,但在字节数组而不是字符串上。

是否有内置的东西可以帮助我(或者是否有好的第三方工具),或者我需要从头开始工作?

字符串是 UTF-16,所以来回转换不是一个好主意吗?至少浪费了很多开销......对吗?


byte[] a = {1,2,3,0,1,2,3,0,0,0,0,4};
String s0 = new String(a, "ISO-8859-1");
String s1 = s0.replaceAll("\\x00{4,}", "");
byte[] r = s1.getBytes("ISO-8859-1");

System.out.println(Arrays.toString(r)); // [1, 2, 3, 0, 1, 2, 3, 4]

我使用 ISO-8859-1 (latin1),因为与任何其他编码不同,

  • 范围内的每个字节0x00..0xFF映射到有效字符,并且

  • 这些字符中的每一个都具有与其 latin1 编码相同的数值。

这意味着字符串与原始字节数组的长度相同,您可以通过其数值将任何字节与\xFF构造,并且您可以将结果字符串转换回字节数组而不会丢失信息。

我不会尝试display字符串形式的数据——尽管所有字符都是有效的,但其中许多字符不可打印。另外,避免操作字符串形式的数据;您可能会无意中进行一些转义序列替换或其他编码转换而没有意识到。事实上,我不会推荐根本做这种事,但这不是你要求的。 :)

另外,请注意,此技术不一定适用于其他编程语言或正则表达式风格。您必须单独测试每一项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:从字节数组中删除连续的零段 的相关文章

  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • 如何在 PHP 数组中的另一个已知(通过键或指针)元素之后有效地插入元素?

    给定一个数组 a array abc 123 k1 gt v1 k2 gt v2 78 tt k3 gt v3 当其内部指针指向其元素之一时 如何在当前元素之后插入元素 如何在键已知元素 例如 k1 之后插入元素 表现护理 您可以通过使用拆
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 在 Javascript 中创建数组

    我对 javascript 不太熟悉 并且在用 javascript 制作 2d 或者也许我可能需要 3d 数组时遇到了一些麻烦 我目前需要收集 2 条信息 一个 ID 和一个值 因此我创建了以下内容 var myArray var id
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car

随机推荐

  • 检查 Internet 和特定站点是否在 JavaScript/AJAX 中正常运行

    我有一个在我的设备上本地运行的页面 我想使用 AJAX 或普通 JavaScript 来检查设备是否已连接到互联网and如果某个特定站点已启动 此外 我试图弄清楚如何通过 AJAX 计算 RSS 提要中的条目数 但我以前从未围绕 RSS 进
  • 对数据库进行更改后如何保存DataSet?

    如果我有一个名为 myDs 的数据集 并且我通过在循环中直接访问来编辑其中的字段 如下所示 for int i 0 i lt myDS Tables TableName Rows Count i some function or web m
  • 核心数据在枚举时发生变异

    我在核心数据方面遇到了一个恼人的问题 我的应用程序需要从 iPhone 获取联系人并将其保存在我的数据库中 我正在尝试在后台线程中执行此操作 我使用上面的代码 self performSelectorInBackground selecto
  • Soundcloud API - 分别提取艺术家姓名和歌曲标题?

    查看 Soundcloud 文档 似乎您无法单独提取艺术家姓名和歌曲名称 或者我遗漏了什么 http developers soundcloud com docs api reference playlists IE 为了歌曲https s
  • VS2010总是重建解决方案?

    我有一个包含 40 个项目的解决方案 我最近将每个项目的输出路径重新配置为以下值 输出 对每个构建配置的 csproj 文件进行了更改 这一更改达到了预期目的 将所有已编译的程序集收集到一个文件夹中 但不寻常的副作用是 每次我点击 F5 调
  • 卡在比较器

    这是我的第一篇文章 这是针对 Java 7 的 有人可以告诉我为什么我无法访问 CompareIpaddress 类中的 first a 吗 我不知道为什么 SOF 不允许我发布这个 除非我输入更多的东西 这足够填充吗 谢谢 戈登 impo
  • 访问各种缓存和主内存的大致成本?

    谁能给我访问 L1 L2 和 L3 缓存以及 Intel i7 处理器上主内存的大致时间 以纳秒为单位 虽然这不是一个具体的编程问题 但了解这些类型的速度细节对于一些低延迟编程挑战是必要的 每个人都应该知道的数字 0 5 ns CPU L1
  • MySQL:如何将 varchar(255) UNIQUE 列更改为 UNIQUE Text NOT NULL?

    当前列是 VARCHAR 255 NOT NULL 那么如何将其更改为 TEXT NOT NULL 注意 要更改其属性类型的列是另一列的 UNIQUE KEY 组合 例如 唯一密钥 名称 描述 列描述当前采用 varchar 255 无法更
  • 如何使用 bash 替换 json 中的文本

    我正在尝试更换质量测试服务 by 测试服务在 JSON 文件中使用 bash 有人可以帮我吗 谢谢 JSON 文件 variables json variable qa test services default prod test 1 p
  • 使用 svlib 从 SystemVerilog 中的字符串中提取正则表达式匹配

    我是THE的新用户svlibSystemVerilog 环境中的封装 参考Verilab svlib 我有以下示例文本 PARAMATER lollg 1 SPEC ID 1G3HSB 1 我想使用正则表达式来提取1G3HSB从这段文字 我
  • 在 R 中使用 osmplotr 和 OpenStreetmap 绘制海域

    我正在尝试使用 Openstreetmap 通过osmplotrCRAN 上的软件包 绘制海岸线并将大海涂成蓝色 因为大海不是多边形 所以我尝试使用osm line2poly 将线条变成多边形 然而 下面的最小可重现示例给出了以下错误 Er
  • 使用 hbase 处理图像、视频和音频类型

    任何人都知道如何使用 Hbase 处理音频 视频和图像等非结构化数据 我尝试了很多 但没有任何想法 请提供任何帮助 选项1 将图像转换为字节数组 您可以准备放置请求并插入到表中 同样也可以实现音频和视频文件 See https docs o
  • C语言中的对象

    即使我浏览了一些 C 语言教程 笔记 我还是遇到了 对象 这个术语 我一直想知道对象与过程语言有什么关系 深入一点我可以理解 占用一块内存的东西在c中被称为 对象 我的问题是我的理解是否正确或者是否有我遗漏的东西 谢谢 来自C99标准草案
  • 如何存储/检索 RSA 公钥/私钥

    我想使用RSA公钥加密 存储或检索私钥和公钥的最佳方法是什么 XML 在这里是个好主意吗 如何获得钥匙 RSAParameters privateKey RSA ExportParameters true RSAParameters pub
  • ExpressJS:每 24 小时运行一次函数

    在 ExpressJS 中每 24 小时运行一次自动化函数的最简单方法是什么 除了运行无限循环之外 我到处寻找解决方案 原则上这是唯一的方法吗 你需要使用节点 cron npm var cron require node cron cron
  • 为什么 Ruby `**` 运算符的优先级高于一元 `-` ?

    这会导致这样的情况 1 0 5 gt 1 只有括号可以解决这个问题 1 0 5 gt 6 123031769111886e 17 1 0i 这比预期的要差1 i 但基本可以接受 在我去抱怨 Ruby bug 之前 我想知道是否有某种原因造成
  • 有没有办法提高FlyingSaucer的性能?

    我已经关注了本文使用 FlyingSaucer 将 XHTML 转换为 PDF 这很出色 但有一个重大缺点 速度慢得离谱 我发现从 XHTML 渲染 PDF 需要 1 到 2 分钟 无论该页面多么简单 基本代码 import java io
  • VBscript 代码捕获标准输出,而不显示控制台窗口

    这是一个 VBScript 代码示例 展示了如何捕获命令行程序发送到标准输出的任何内容 它执行命令xcopy 并在消息框中显示输出 在消息框出现之前 您会看到控制台窗口突然弹出 Set objShell WScript CreateObje
  • 使用指针了解数组的大小

    我如何使用使用 malloc 分配的指针知道数组的大小 include
  • Java:从字节数组中删除连续的零段

    例如 假设我想从数组中删除所有长度超过 3 个字节的连续 0 段 byte a 1 2 3 0 1 2 3 0 0 0 0 4 byte r magic a System out println r result 1 2 3 0 1 2 3