죄송이 물어하지만이 작은 일을 검색하고 아래 링크를 이것에 관련된 뭔가를해야만 찾았지만 어떤 아이디어를 얻을 수 없습니다했다저장 float 값
float 값을 저장하는 방법은 나중에 메모리 버퍼에 저장하는 데 사용되는 부호없는 char에 0.00895라고 가정합니다.
그리고 나중에 배열을 읽고 메모리에서 다시 읽고 싶습니다.
감사합니다.
죄송이 물어하지만이 작은 일을 검색하고 아래 링크를 이것에 관련된 뭔가를해야만 찾았지만 어떤 아이디어를 얻을 수 없습니다했다저장 float 값
float 값을 저장하는 방법은 나중에 메모리 버퍼에 저장하는 데 사용되는 부호없는 char에 0.00895라고 가정합니다.
그리고 나중에 배열을 읽고 메모리에서 다시 읽고 싶습니다.
감사합니다.
당신은 당신이 메모리의 다른 버퍼에 float 배열을 복사한다면 그것은 도움이 될 것입니다이 ...에 대한 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]);
}
네,이게 내가 찾고있는 것으로 보이지만 float 값을 unsigned char에 저장하려고합니다. – user1016528
당신은'unsigned char'의 * 배열 *을 의미합니다, 맞습니까? 이 경우'char' 대신'unsigned char'을 사용하십시오. 아무런 차이가 없습니다. * single *'unsigned char'을 의미한다면 꿈꾸는 것입니다. 'float'는 4 바이트를 차지하고'char'는 하나만 차지합니다. – paddy
Im이 버퍼 내용을 테스트하려고 할 때'* f_buf = 0.00895; check = 버퍼 [0]; \t \t \t \t \t \t \t sprintf (value_current, "% f", check); \t \t \t \t \t \t \t 위치 = 0x40; Lcd_move (위치); Lcd_puts (value_current); '출력은 152이지만 버퍼에는 실제로이 값인 0.00895가 포함되어 있습니까? – user1016528
당신은 char 버퍼에 메모리를 복사 할 수 있습니다.
float a;
char buffer[sizeof(float)];
memcpy(buffer,&a,sizeof(float));
sprintf를 사용할 수 있습니까 (value_current, "% d", 버퍼 [0]); 내 출력을 버퍼 0 요소에서 볼 수 있습니다. 버퍼의 데이터를 볼 수 있습니까? – user1016528
읽기가 어려울지라도 % c 또는 % X을 선호하더라도 그렇습니다. – dzada
왜 float 값을 부호없는 char 배열에 저장해야합니까? float 값을 사용할 수 있습니다. 모든 경우에 바이트 단위로 메모리에 보관됩니다. –
메모리에 데이터를 저장하는 버퍼 함수가 unsigned char로 매개 변수를 사용하기 때문에. abt float 값을 얻지 못했습니까? – user1016528