标签: buffer

在c中找到好的缓冲库

我们正在用C(只是C)设计一个软件,其中的某些部分需要缓冲区结构。但我知道如何选择一个好的吗?实际上我们的程序是开源的,我们需要一个开源且高效的C语言缓冲区和队列库来实现这部分。感谢您的帮助。

c buffer

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

尝试使用 openGL 创建纹理时缓冲区大小不足

我目前正在尝试使用 JOGL 生成带纹理的多边形表面,但收到一条我不明白的错误消息。Eclipse 告诉我“java.lang.IndexOutOfBoundsException:缓冲区中需要 430233 个剩余字节,只有 428349”。据我所知,由 readTexture 方法生成的缓冲图像的大小不足以与 glTex2D() 方法一起使用。但是,我不确定如何解决该问题。代码的相关部分如下,任何帮助将不胜感激。

public void init(GLAutoDrawable drawable) 
{
    final GL2 gl = drawable.getGL().getGL2();
    GLU glu = GLU.createGLU();
    //Create the glu object which allows access to the GLU library\

    gl.glShadeModel(GL2.GL_SMOOTH);              // Enable Smooth Shading
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);    // Black Background
    gl.glClearDepth(1.0f);                      // Depth Buffer Setup
    gl.glEnable(GL.GL_DEPTH_TEST);              // Enables Depth Testing
    gl.glDepthFunc(GL.GL_LEQUAL);               // The Type Of Depth Testing To Do
    gl.glEnable(GL.GL_TEXTURE_2D);
    texture = genTexture(gl);
    gl.glBindTexture(GL.GL_TEXTURE_2D, texture);
    TextureReader.Texture texture = null;
    try {
        texture …
Run Code Online (Sandbox Code Playgroud)

java opengl buffer textures bufferedimage

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

如何将图像写入具有缓冲区的服务器?

在 Expressjs 中,我上传了一张图片。它是一个缓冲区编码 7 位:

 { fieldname: 'file',
  originalname: 'img.JPG',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 64 00 64 00 00 ff db 00 43 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0
1 01 01 01 01 01 ... >,
  size: 873066 }
Run Code Online (Sandbox Code Playgroud)

如何将其作为图像保存到文件系统?保存了一些东西,但它不是图像:

Windows 照片查看器无法打开此图片,因为该文件似乎已损坏、损坏过大。

这些不起作用:

fs.writeFile('uploaded-img.jpg', req.file, 'ascii', function(err) …
Run Code Online (Sandbox Code Playgroud)

buffer node.js node.js-stream

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

WebGL; 实例化渲染 - 设置除数

我正在尝试使用实例化渲染 ( ANGLE_instanced_arrays)在 webgl 中绘制大量立方体。

但是,我似乎无法理解如何设置除数。我有以下缓冲区;

36 个顶点(6 个面由 2 个三角形组成,每个三角形使用 3 个顶点)。每个立方体 6 种颜色(每个面 1 种颜色)。每个立方体翻译 1 次。

重用每个立方体的顶点;我将它的除数设置为 0。对于颜色,我将除数设置为 2(即对两个三角形使用相同的颜色 - 一张脸))。对于平移,我将除数设置为 12(即 6 个面 * 每个面 2 个三角形的相同平移)。

为了渲染我打电话 ext_angle.drawArraysInstancedANGLE(gl.TRIANGLES, 0, 36, num_cubes);

然而,这似乎并没有渲染我的立方体。

使用平移除数 1 确实如此,但那时颜色相差甚远,立方体是单一纯色。

我想这是因为我的实例现在是完整的立方体,但是如果我限制count(即每个实例的顶点),我似乎并没有完全通过顶点缓冲区,实际上我只是为每个立方体渲染一个三角形然后。

我将如何渲染大量这样的立方体;脸色各异?

buffer instance webgl

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

将缓冲区写入文件不会返回错误,那么为什么文件为空后记?

我正在尝试读取所有标准输入并将其写入文件。它没有向提供的文件写入任何内容。为什么它不起作用?

package main

import (
    "os"
    "bytes"
    "fmt"
    "bufio"
)

func main() {
    fn := os.Args[1]
    var input bytes.Buffer
    scanner := bufio.NewScanner(os.Stdin)

    for scanner.Scan() {
        fmt.Fprintf(&input, scanner.Text())
        fmt.Fprintf(&input, "\n")
    }   

    fi, _ := os.Open(fn)
    defer fi.Close()

    fi.Write(input.Bytes())
}
Run Code Online (Sandbox Code Playgroud)

进而...

touch writetothis.txt
echo "input text" | go run main.go writetothis.txt
# writetothis.txt is empty
Run Code Online (Sandbox Code Playgroud)

buffer go

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

bufio 包中的 golang Writer.Write() 与 ioutil 包中的 WriteFile()

当我实际上应该在 ioutil 上使用 bufio 包时,我很困惑。例如在写入文件或读取文件时。我有一个场景,其中有多个函数和 API 分阶段处理同一数据。我不确定在这种情况下选择 bufio 而不是 ioutil 有帮助吗?请建议。

buffer go

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

如何在NodeJS中将缓冲区编码为Base64

我正在尝试将缓冲区编码为base64字符串,但是它只是将数组复制粘贴到字符串中而不进行编码。

我要编码的缓冲区是:

Uint8Array(16)

0:120

1:207

2:91

3:215

4:169

5:206

6:208

7:145

8:250

9:19

10:191

11:254

12:154

13:209

14:47

15:122

缓冲区:ArrayBuffer {byteLength:16}

byteLength:16

byteOffset:0

长度:16

:Uint8ArrayPrototype {…}

我试图使用buffer.toString('base64'),就像您在下面看到的那样,但是它不起作用

我为此使用的代码如下:

var buf = Buffer.from([18, 5, 2, 7, 32, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
    var aesCbc = new aesjs.ModeOfOperation.cbc(key);
    var encryptedBytes = aesCbc.encrypt(buf);
    console.log(encryptedBytes)
    var string64 = encryptedBytes.toString('base64');
    console.log(string64)
Run Code Online (Sandbox Code Playgroud)

我期望这样的字符串:

eAnguAGneSD + Y / jOpikpnQ ==(这只是base64字符串的示例)

但结果是:

字符串:120,207,91,215,169,206,208,145,250,19,191,254,154,209,47,122

谢谢你的时间 !

javascript base64 buffer encode node.js

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

解析来自 UDP 套接字的 recvfrom() 消息的意外行为

目前正在使用 UDP 套接字,我被困在试图了解以下情况。

接收缓冲区定义如下:

char buf[1024];
...
memset(&buf, 0, sizeof(buf));
Run Code Online (Sandbox Code Playgroud)

& 通过调用 recvfrom() 完成

size = recvfrom(sockdf, buf, sizeof(buf), MSG_WAITALL, (struct sockaddr *) &rx, (socklen_t *)&len);
Run Code Online (Sandbox Code Playgroud)

我从远程获取这些数据,使用 Wireshark 确认:

01 fe 00 04 00 00 00 21 53 53 53 5f 54 54 54 54 5f 30 31 32 33 34 35 36 37 10 fe 00 10 02 ac ca fe 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

使用一个简单的for循环来识别缓冲区内容,我得到:

for (i = 0; i < size; …
Run Code Online (Sandbox Code Playgroud)

c printf buffer gdb recvfrom

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

C++ char* 缓冲区的大小

有没有办法char[]通过char*C++ 中的指针来确定缓冲区的大小?我正在使用 C++98。

以下代码行都打印出“8”(本质上是sizeof(char*))。但是我正在寻找缓冲区的实际大小。

int maxBufferLen = 24;
char* buffer = new char[maxBufferLen];

std::cout << sizeof(buffer) << std::endl; // prints '8'
std::cout << ( sizeof(buffer) / sizeof(buffer[0]) ) << std::endl; // prints '8'
Run Code Online (Sandbox Code Playgroud)

在实践中,我char*在函数之间传递该缓冲区,我将无法访问maxBufferLen我用来初始化它的变量。因此,我需要使用另一种方式来确定长度。

c++ buffer char c++98

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

在 Go 服务器的接收端到达不一致的 TCP Protobuf 消息

我有一个“代理”,它将二进制文件解析到一个缓冲区中,每当该缓冲区被填满时,就通过 protobuf 消息将其发送到服务器,然后继续进行下一个二进制解析块,然后再次发送,等等。

在服务器上,我使用一个简单的net/conn包来侦听代理连接并在 while-for 循环中从它读取到缓冲区。当解析完成代理端,它terminate在 protobuf 消息中发送一个布尔值,表明这是最后一条消息,服务器可以继续处理收到的完整数据。

但是,如果我将调试打印留在我的发送方,这会很好地工作,使终端打印显着减慢通过connection.Write().

如果我取消注释这个记录器,那么它发送消息的速度太快,服务器处理的第一个传入消息是一个包含terminate标志的数据包,例如,它没有收到实际的有效负载,而是立即收到最后一条消息。

我知道 TCP 并没有真正区分不同的 []byte 数据包,这很可能是导致这种行为的原因。有没有更好的方法来做到这一点,任何替代方案?

伪代码代理端:

    buffer := make([]byte, 1024)
    for {
        n, ioErr := reader.Read(buffer)
        if ioErr == io.EOF {
            isPayloadFinal = true

            // Create protobuf message
            terminalMessage, err := CreateMessage_FilePackage(
                2234,
                protobuf.MessageType_PACKAGE,
                make([]byte, 1),
                isPayloadFinal,
            )
            // Send terminate message
            sendProtoBufMessage(connection, terminalMessage)
            break
        }
        // Create regular protobuf message
        message, err := CreateMessage_FilePackage(
            2234,
            protobuf.MessageType_PACKAGE,
            (buffer)[:n],
            isPayloadFinal)
        sendProtoBufMessage(connection, message)
   } …
Run Code Online (Sandbox Code Playgroud)

buffer tcp go protocol-buffers

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