问题标签 [bytebuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4684 浏览

java - java, ByteBuffer 从文件中解析数据

在java中,我想快速解析一个包含异构数据(数字和字符)的文件。

我一直在阅读ByteBuffer和内存映射文件。

我可以复制它,但是在解析数据时它变得很棘手。我想分配各种字节。但它变得依赖于编码?

如果文件的格式是,例如:

someString 8
some other string 88

如何将其解析为StringInteger对象?

谢谢!

你做。

0 投票
1 回答
484 浏览

java - 铸造原语与按字节方式修剪它

我想就我的算法的一部分征求意见/建议。

对比

基本上我想知道转换是否存在性能差异,或者使用更大的 ByteBuffer 是否更好。

感谢和问候,

马立克

0 投票
10 回答
350238 浏览

java - 将Java位图转换为字节数组

当我在调用字节后查看缓冲区copyPixelsToBuffer全部为 0...从相机返回的位图是不可变的...但这不重要,因为它正在复制。

这段代码可能有什么问题?

0 投票
4 回答
27426 浏览

android - ByteBuffer 不释放内存

在 Android 上,直接 ByteBuffer 似乎永远不会释放其内存,即使在调用 System.gc() 时也不会。

例子:做

在日志中给出两个数字,第二个至少比第一个大 LARGE_NUMBER。

我该如何摆脱这种泄漏?


添加:

按照 Gregory 在 C++ 端处理 alloc/free 的建议,然后我定义了

然后我在 JAVA 端得到我的 ByteBuffer

并释放它

不幸的是,虽然它确实分配得很好,但它 a) 仍然保持根据分配的内存Debug.getNativeHeapAllocatedSize()b) 导致错误

我现在完全糊涂了,我以为我至少理解了 C++ 方面的东西......为什么 free() 不返回内存?我做错了DeleteGlobalRef()什么?

0 投票
1 回答
415 浏览

java - 从 Java 中的服务器读取数据所需的帮助

我在使用 DataInputStreams 时遇到了一些问题,

所以我有来自本地服务器的数据,我知道我读入的字节将遵循这种格式

0x01 指定它是一个字符串

然后随机数量的字节

后跟 0x00 0x00,

我在从服务器读取时遇到问题,

这是我的阅读方法

如果我有点模棱两可,请告诉我。

我正在取回数据,它只是不完全正确,基本上我所做的是通过一个字节数组发送,第一个元素是 0x01 来指定字符串,然后是字节字符串,最后最后两个元素是 0x00 和 0x00 ,然后这个数据从服务器发回给我,服务器肯定收到数据,只是当我读回它不正确时,字母会丢失

此代码将数据编码为 0x01 格式,然后以字节为单位的消息,然后是 0x00,0x00

0 投票
4 回答
7230 浏览

java - 扩展 java.nio.ByteBuffer 的 Java 循环字节缓冲区

我在 SO 和其他地方看到的每个 Java 循环字节缓冲区实现都没有扩展 java.nio.ByteBuffer,这对我来说是与 SocketChannel 一起使用所必需的。有谁知道扩展 ByteBuffer 的开源实现。我尝试自己编写,但是当我意识到位置和剩余功能是最终的并且我要覆盖它们以调整头部并防止缓冲区溢出异常时,我陷入了困境。在通过套接字通道发送 5000 条消息时,每条消息都需要我将内容复制到线性缓冲区的头部,这增加了每条消息大约 450 毫秒或 90 微秒(其中包含 10 个数据包,因此每个数据包 9 微秒)。现在我能想到的唯一可行的方法是覆盖每一个方法并重写所有内容。有任何想法吗?

0 投票
1 回答
402 浏览

c# - 如何正确编写 UDP 数据包

我正在尝试从我不久前编写的 C++ 程序中重写我的一些代码,但我不确定是否/如何正确写入字节数组,或者我是否应该使用其他东西。我试图更改为 C# .NET 的代码如下。

0 投票
3 回答
380 浏览

c# - 将代码从 C++ 转换为 C# 的问题

我将很久以前编写的 C++ 应用程序中的一些代码转换为 C#。在 C++ 中,我使用了一个有点缓冲的库,但是我缺乏 C# 知识使得转换有些复杂。

当我查询我的应用程序时,我只是使用 ByteWriter 而没有正确转换任何值(就像 bf.Write(-1) 和 bf.Write("stringhere") 查询程序至少查询它,只是得到错误的信息。当我正确地转换了值(长,字节,短等)它完全破坏了,查询应用程序甚至不再看到它了。

C++ 代码片段

C# 代码

//------------------------------------

0 投票
2 回答
1642 浏览

java - 用于低级 UDP 消息传递系统的 ByteBuffers 的替代品

我正在为加密的 P2P 架构开发一个低级 UDP 消息传递层,如果有兴趣,您可以在其 github 页面上阅读更多信息。

我已经构建了一个简洁的序列化框架,可以将 POJO 转换为紧凑的 ByteBuffer,还构建了使使用对称和非对称加密相当轻松的各种库。

我现在正在研究消息传递框架,它利用动态代理来实现与 GWT 的 RPC 机制类似的功能。

我的问题是,我很早就决定让序列化机制从 ByteBuffers 读取和写入。我现在发现这有几个问题:

  • 您需要在序列化对象之前知道最大字节缓冲区大小
  • 它们是可变的,这使得它们容易出错
  • 它们与 DatagramPacket 不是特别兼容,并且 DatagramChannel 令人困惑

谁能建议在这个框架中实现序列化的替代方法?

0 投票
3 回答
372 浏览

java - ByteBuffer 的 HashSet(实际上是整数),用于从 ByteBuffer 数组中分离唯一和非唯一元素

我有一个ByteBuffers 数组(实际上代表整数)。我想在数组中分离唯一和非唯一的字节缓冲区(即整数)。因此,我正在使用这种类型的 HashSet:
HashSet<ByteBuffer> columnsSet = new HashSet<ByteBuffer>()

只是想知道是否HashSet是这样做的好方法?ByteBuffer如果我为 a 这样做,我是否会支付更多费用Integer

(实际上我正在从 DB 读取序列化数据,需要在此操作后写回,因此我想避免字节缓冲区到 Integer 和返回之间的序列化和反序列化!)

您对此的想法表示赞赏。