1
我想将一个整数或浮点数转换为一个特定的形式(编程mbed,微控制器)的字符数组。C + + int或浮点数到字符阵
的整数应该是32位的big-endian补整数 花车应该是32位大端IEEE 754浮点数
试了几件事情:
uint8_t *v;
uint8_t valuePos = 3;
v = (uint8_t *)datum->data.i; //I get the int or float from datum->data.i
buff[lengthEnd++] = v[valuePos--]; //buff is the char array
buff[lengthEnd++] = v[valuePos--];
buff[lengthEnd++] = v[valuePos--];
buff[lengthEnd++] = v[valuePos];
和
uint32_t i = BigEndian(datum->data.i);
uint8_t * ptr = (uint8_t *) &i;
strcat(buff, (char *) ptr); //maybe strcat isn't a good function to use here
lengthEnd += 4;
但我不能让它工作,我总是得到一些其他的数字。出了什么问题?
嗨,第一个例子在另一个OSC类的以前的适应工作。现在重做整个事情,现在它的值为2015428624而不是123. 代码的第二部分来自另一个arduino的OSC类,但不是strcat而是使用p.write(....)。 看看stringstream我可以如何使用它: – Jannes
@ H2CO3:他说他认为整数是以十进制存储的? –
@LightnessRacesinOrbit他没有。它来自'strcat(buff,(char *)ptr);'。 – 2014-01-05 16:42:03