标签: bytebuffer

CGDataProviderCopyData()实际上是否复制了字节?或只是指针?

我尽可能快地连续运行该方法,并且越快越好,所以很明显,如果CGDataProviderCopyData()实际上是逐字节地复制数据,那么我认为必须有一种更快的方式来直接访问该数据. ..只是内存中的字节数.任何人都知道确实是否CGDataProviderCopyData()真的复制了数据?或者它只是创建一个指向现有数据的新指针?

iphone performance bytebuffer core-graphics

2
推荐指数
2
解决办法
4407
查看次数

如何确定正在运行的 JVM 上的 MaxDirectMemorySize?

我有一个使用 DirectByteBuffers 来存储数据的应用程序,但我想知道 MaxDirectMemorySize 是什么,这样我就不会意外超过它。

如果不手动配置,我如何从程序中找出 MaxDirectMemorySize 是什么?

java garbage-collection jvm bytebuffer

2
推荐指数
1
解决办法
5002
查看次数

将 uint8_t 转换为 NSData

我已经根据 Apple Developer 网站上提供的示例在 iOS 应用程序中实现了公钥私钥 RSA 加密。

如果我加密并返回uint8_t cipherBuffer,然后从 中解密,它会完美地工作uint8_t cipherBuffer。但是我需要将加密数据存储到.xcdata模型中NSData。

我遇到的问题是在解密时可靠地将其转换uint8_t cipherBuffer为NSData和/或将其转换NSData回。uint8_t解密的数据似乎被截断。

这就是我将uint8_t加密缓冲区转换为NSData:

return [NSData dataWithBytesNoCopy:cipherBuffer length:BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)

这就是我在解密时将加密数据转换NSData回缓冲区的方法:uint8_t

uint8_t *cipherBuffer = (uint8_t*)[cipherText bytes];
Run Code Online (Sandbox Code Playgroud)

bytebuffer rsa nsdata ios

2
推荐指数
1
解决办法
1万
查看次数

将UnmanagedMemoryStream转换为Byte-Array

就这么简单,我怎么能在转换VBNET一个UnmanagedMemoryStream到字节数组?

Dim bytes() As Byte = My.Resources.AudioFile
Run Code Online (Sandbox Code Playgroud)

例外:

Value of type 'System.IO.UnmanagedMemoryStream' cannot be converted to '1-dimensional array of Byte'.
Run Code Online (Sandbox Code Playgroud)

.net vb.net bytebuffer bytearray unmanaged-memory

2
推荐指数
1
解决办法
3467
查看次数

Java SocketChannel:为什么 wrap-flip-write 不起作用但 wrap-write 可以?

假设我们有一个 JavaSocketChannel连接到一个正在等待传入数据的服务器:

SocketChannel server = SocketChannel.open();
server.connect(new InetSocketAddress(ip, port));
Run Code Online (Sandbox Code Playgroud)

我们发送我们的请求如下:

byte[] request = "This is a request for server!".getBytes();
ByteBuffer buffer = ByteBuffer.wrap(request);
buffer.flip();
int write = 0;
while (buffer.hasRemaining())
    write += server.write(buffer);
System.out.println(write);
Run Code Online (Sandbox Code Playgroud)

上面的代码返回0,这意味着它不会向通道写入任何字节!

但是,如果我删除该buffer.flip()行,它将正常工作并发送数据:

byte[] request = "This is a request for server!".getBytes();
ByteBuffer buffer = ByteBuffer.wrap(request);
int write = 0;
while (buffer.hasRemaining())
    write += server.write(buffer);
System.out.println(write);
Run Code Online (Sandbox Code Playgroud)

为什么是这样 ?!

java nio bytebuffer socketchannel

2
推荐指数
1
解决办法
1310
查看次数

glfwGetVideoMode(glfwGetPrimaryMonitor())无效

所以我正在观看有关如何使用Lwjgl创建窗口的java教程,我得到了这个部分,你得到了主监视器:

    ByteBuffer vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());

    glfwSetWindowPos(
            window,
            (GLFWVidMode.width(vidmode) - width) / 2,
            (GLFWVidMode.height(vidmode) - height) / 2
        ); 
Run Code Online (Sandbox Code Playgroud)

但是我在eclipse上遇到这个错误:"类型不匹配:无法从GLFWVidMode转换为ByteBuffer"

导致不允许这样做:GLFWVidMode.width GLFWVidMode.height(它说:"GLFWVidMode类型中的方法高度()不适用于参数(ByteBuffer)")

我已经搜索了另一个教程,它也按顺序使用这些方法,因此我不确定应该替换它以使其工作或者如果它们在Lwjgl 3.0中更新了某些东西.

java bytebuffer lwjgl

2
推荐指数
1
解决办法
1279
查看次数

从文件中读取n个字节的文本

我有一个文本文件,我从它读取第一行,找出它需要多少字节,

open($fh, "<:raw", $file);
my $len;
while (my $row = <$fh>) {
  $len = length $row;
  last;
};
Run Code Online (Sandbox Code Playgroud)

现在我想从中间行+100字节读取该文件,我该怎么做?

就像是

read ($fh, 100, $len/2)
Run Code Online (Sandbox Code Playgroud)

无法真正弄清楚正确的语法.

perl bytebuffer text-files

2
推荐指数
1
解决办法
682
查看次数

将ByteBuffer的一部分转换为String

我有一个ByteBuffer包含派生的字节String.getBytes(charsetName),其中"包含"表示该字符串包含ByteBuffer position()和之间的整个字节序列limit().

什么是让我回来的最好方法?(假设我知道编码字符集)有没有比以下更好的东西(看起来有点笨重)

byte[] ba = new byte[bbuf.remaining()];
bbuf.get(ba);
try {
    String s = new String(ba, charsetName);
}
catch (UnsupportedEncodingException e) {
    /* take appropriate action */
}
Run Code Online (Sandbox Code Playgroud)

java string nio bytebuffer

1
推荐指数
1
解决办法
1134
查看次数

将异常的堆栈跟踪转换为byte []数组或ByteBuffer(Java)是否更有效?

我需要将异常记录到数据库中.数据库API声明我可以将值作为ByteBuffer传递或作为byte []数组传递.哪个更有效率?

private final static byte[] getThrowableStackTraceBytes(Throwable throwable) {
    StringWriter throwableStackTraceStringWriter = new StringWriter();
    throwable.printStackTrace(new PrintWriter(throwableStackTraceStringWriter));
    return throwableStackTraceStringWriter.toString().getBytes();
}
Run Code Online (Sandbox Code Playgroud)

与

private final static ByteBuffer getThrowableStackTraceByteBuffer(Throwable throwable) {
    ByteArrayOutputStream throwableStackTraceByteArrayOutputStream = new ByteArrayOutputStream();
    throwable.printStackTrace(new PrintStream(throwableStackTraceByteArrayOutputStream));
    ByteBuffer throwableByteBuffer = ByteBuffer.wrap(throwableStackTraceByteArrayOutputStream.toByteArray());
    return throwableByteBuffer;
}
Run Code Online (Sandbox Code Playgroud)

我认为如果我使用ByteBuffer,整体操作会更有效,特别是在它被传递到数据库方法后处理它时.我对吗?

(具体来说,我需要将异常记录到Hypertable中,它使用Thrift Java API.)

java bytebuffer bytearray stack-trace printstacktrace

1
推荐指数
1
解决办法
1432
查看次数

ByteBuffer putLong()长达7个字节的值

我有一个long.我知道这long不是很大.实际上,它可以编码为7个字节的无符号整数.

我想我写long到byte[7]使用ByteBuffer和小端.

这个

long myLong = ... //some value
byte[] myLongBytes = ByteBuffer.allocate(7).order(ByteOrder.LITTLE_ENDIAN).putLong(myLong).array();
Run Code Online (Sandbox Code Playgroud)

IndexOutOfBoundsException当然是投掷.我甚至可以这样做ByteBuffer吗?我应该以不同的方式做吗?

java bytebuffer endianness long-integer

1
推荐指数
2
解决办法
2613
查看次数