arrays - D - 是否有用于读取和写入字节的字节缓冲区?

标签 arrays d bytebuffer read-write

我今天刚开始学习 D,我真的需要像这样读写数据:

byte[] bytes = ...;
ByteBuffer buf = new ByteBuffer(bytes);
int a = buf.getInt();
byte b = buf.getByte();
short s = buf.getShort();
buf.putInt(200000);

D 中是否有内置的东西可以实现此目的,还是我必须自己制作?

最佳答案

我建议查看 std.bitmanip 的 read , peek , writeappend功能。例如

ubyte[] buffer = [1, 5, 22, 9, 44, 255, 8];
auto range = buffer; // if you don't want to mutate the original

assert(range.read!ushort() == 261);
assert(range == [22, 9, 44, 255, 8]);

assert(range.read!uint() == 369_700_095);
assert(range == [8]);

assert(range.read!ubyte() == 8);
assert(range.empty);
assert(buffer == [1, 5, 22, 9, 44, 255, 8]);

没有缓冲区类型 - 相反,它们是在 ubyte 范围(包括 ubyte[])上运行的自由函数 - 因此它们的工作方式可能不完全相同您正在寻找什么,但它们是为您需要从数组或其他类型的字节范围中提取整数值的情况而设计的。如果您确实想要某种单独的缓冲区类型,那么您应该能够相当轻松地创建一个在内部使用它们的缓冲区类型。

关于arrays - D - 是否有用于读取和写入字节的字节缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35881580/

相关文章:

c - 初始化char数组的不同方式

events - D编程语言中的C#类事件

sdl - 对 opEquals : Linker errors with Derelict3 Bindings to SDL2 的 undefined reference

Java:ByteBuffer 与 jdk.incubator.foreign(巴拿马)外部内存方法(MemoryLayout/Segment)的性能对比

javascript - javascript中关联多维数组赋值错误

c++ - 计算交换次数以插入以递增顺序对整数数组进行排序的有效方法

javascript - 使用 Javascript 从数组中删除项目

openssl - d openssl aes 加密字节数组在执行之间不是恒定的

hadoop - Haddop MRUnit MapDriver.addInput()给出NotSerializableException:java.nio.HeapByteBuffer错误

Java MappedByteBuffer.isLoaded()