将浮点值存储到无符号字符数组

use*_*528 3 c floating-point unsigned-char

很抱歉问这个问题,但我搜索了这个小东西,发现了与以下链接相关的东西,但无法得到任何想法

  1. 如何将浮点数存储在数组中以供以后使用?

  2. 存储在 unsigned char 数组中

如何将浮点值(假设 0.00895)存储到无符号字符,稍后用于存储在内存缓冲区中。

后来我需要读回数组并想从内存中读回。

谢谢

pad*_*ddy 6

您不需要memcpy这个...如果您将浮点数组复制到内存中其他位置的缓冲区中,这将很有用。您真正需要的只是使用不同的指针类型来查看字符数组。

const size_t BUFSIZE = 4096;
char buffer[BUFSIZE];
float *f_buf = (float*)buffer;
Run Code Online (Sandbox Code Playgroud)

如果您只想将单个浮点数粘贴到缓冲区的开头,则以下两行之一都可以:

*f_buf = 0.00895;

f_buf[0] = 0.00895;
Run Code Online (Sandbox Code Playgroud)

它真正做的只是让您将缓冲区视为浮点数组。

int i;

/* Put a bunch of floats into the buffer */
for( i = 0; i < 10; i++ ) {
    f_buf[i] = i / 2;
}

/* Display contents of buffer in hex */
for( i = 0; i < 10 * sizeof(float); i++ ) {
    printf( "%02x", (int)buffer[i] );
}
printf( "\n" );

/* Sanity-test the buffer contents */
for( i = 0; i < 10; i++ ) {
    printf( "%d: %f\n", i, f_buf[i] );
}
Run Code Online (Sandbox Code Playgroud)