小编use*_*470的帖子

将char数组中的元素转换为int

我有一个80元素char数组,我正在尝试特定的元素,integer并得到一些数字错误.十六进制的数组元素40是0xC0.当我尝试将它分配给integer我得到十六进制0xFFFFC0时,我不知道为什么.

char tempArray[80]; //Read in from file, with element 40 as 0xC0
int tempInt = (int)tempArray[40]; //Output as 0xFFFFC0 instead of 0x0000C0
Run Code Online (Sandbox Code Playgroud)

c++ arrays char

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

如何处理缓冲串行数据

我正在尝试找出一个读取串行数据的好解决方案,以及当 aread()完成但它包含不完整的消息时该怎么办。

设备之间的预期消息具有定义的开始和结束字节,因此很容易看到消息何时开始和结束。

我可以很好地打开串行端口并从串行端口读取。但我遇到计算机读取速度快于数据传输速度的情况,并且我收到一条不完整的消息。

对于这个例子,假设预期的消息是

0x10 0xFF 0xFF 0xFF 0xFF 0x11
Run Code Online (Sandbox Code Playgroud)

以0x10开始,0x11结束,0xFF为数据字节

我是 C 新手,所以我可能会遗漏一些明显的东西,我当前的解决方案

int main() {
     /* Ommited serial port opening and checking*/
     char read_buffer[80];
     char message_buffer[80];
     int message_buffer_index = 0;
     int start_index = -1;
     int end_index = -1;
     int read_bytes;
     read_bytes = read(serial_port, read_buffer, sizeof(read_buffer) - 1);
     /* Now lets say read_bytes returns 3 and read buffer is {0x10, 0xFF, 0xFF} */
     /* What should I do with the read_buffer? Currently appending to message buffer*/ …
Run Code Online (Sandbox Code Playgroud)

c buffer serial-port

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

C memcpy进行结构分配

我编写了一个简单的程序来测试使用memcpy将字节从字节缓冲区复制到结构中。但是我没有得到预期的结果。

我分配了100个字节的缓冲区,并将值设置为0、1、2 ... 99。然后,我将字节复制到16字节的结构中。

字节0x01丢失了。我试图了解正在发生的事情

#include <stdio.h>
#include <stdint.h>

struct Test {

    uint8_t a;
    uint16_t b;
    uint32_t c;
    uint64_t d;
    uint8_t e;
};

int main(int argc, char** argv) {

    uint8_t buffer[100];
    for (uint8_t i = 0; i < 100; i++) {
        buffer[i] = i;
    }

    struct Test test;
    memcpy(&test, buffer, sizeof(struct Test));

    printf("A is %ld and should be %ld\n", test.a, 0x00);
    printf("B is %ld and should be %ld\n", test.b, 0x0201);
    printf("C is %ld and should be %ld\n", test.c, 0x06050403);
    printf("D …
Run Code Online (Sandbox Code Playgroud)

c memcpy

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

Matlab 快速绘制具有相应颜色数组的点

我有一个长度为 N 的 X/Y 数据数组,以及一个对应的颜色数组,即 Nx3。我希望根据颜色数组中的相应颜色为 X/Y 数据的绘图着色。

单个 XY 数组的大小大于 100000,我有很多数组要绘制,因此希望为此找到一个快速解决方案。

我目前如何在循环中执行此操作的示例

xy_data = zeros(100000, 2);
colors = zeros(100000, 3);
figure;
hold on
for i = 1:length(xy_data)
    plot(xy_data(i, 1), xy_data(i, 2), '.', 'color', colors(i, :));
end
Run Code Online (Sandbox Code Playgroud)

这在技术上是有效的,但它可能会很慢,特别是当有大量数据点和大量 xy 数组要绘制时。我想知道是否

  1. 有没有更快的方法?
  2. 有没有办法将它绘制为多色线,而不是标记('.')

matlab matlab-figure

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

隐秘的for循环语句

我在看一些开源软件,他们以不同的方式,然后我看到使用for循环/运营商,我想知道,如果有人能告诉我什么是英文这样做.我相信开源是C语言,也许是C++,不确定它是否有所作为,但我在使用C++.

给出的for循环是,TSTEP = 60,tt和t只是双变量

for (tt=t<0.0?-TSTEP:TSTEP;fabs(t)>1E-9;t-=tt)
Run Code Online (Sandbox Code Playgroud)

c++

-3
推荐指数
1
解决办法
119
查看次数

标签 统计

c ×2

c++ ×2

arrays ×1

buffer ×1

char ×1

matlab ×1

matlab-figure ×1

memcpy ×1

serial-port ×1