将浮点值存储到unsigned char数组

时间:2012-11-12 22:12:04

标签: c floating-point unsigned-char

很抱歉问这个,但我搜索了这个小东西,并在下面的链接中找到了相关内容,但无法得到任何想法

  1. How to store floats in array to be used later?

  2. storing in unsigned char array

  3. 如何存储浮点值,假设0.00895为无符号字符,后来用于存储在内存缓冲区中。

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

    由于

2 个答案:

答案 0 :(得分:4)

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

const size_t BUFSIZE = 4096;
char buffer[BUFSIZE];
float *f_buf = (float*)buffer;

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

*f_buf = 0.00895;

f_buf[0] = 0.00895;

所有它真正做的就是让你将缓冲区视为浮点数组。

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] );
}

答案 1 :(得分:2)

你可以将float的内存复制到char缓冲区中。

float a;
char buffer[sizeof(float)];
memcpy(buffer,&a,sizeof(float));