ios - writing float array as reversed bytes each -



ios - writing float array as reversed bytes each -

i going create byte array desired output using ios objective-c. method converting static float array int8_t array bytes array . when comes implementation, have found bytes each float in float array reversed in order. output displayed actual output. please tell me how convert bytes each , display desired output ? below working :

float floatarray[5] = {100.0 , 10.0 , 10.0 , 10.0 , 10.0 }; nsuinteger lengthn = sizeof(floatarray) ; nslog(@" length %lu" , (unsigned long)lengthn); int8_t onebyte = lengthn; int8_t preffix[4] = {0x26, 0x24, 0x61 , onebyte }; // nsarray *chararray = arry; //20d = 14h //char arry[4]={ 0x26, 0x24, 0x61 , onebyte }; int8_t data[lengthn + 5]; memcpy (data, (int8_t *) &preffix, sizeof(preffix)); memcpy (data+4, (int8_t *) &floatarray, lengthn ); int length = (int)lengthn + 5; int checksum = 119 + 97 + (int)lengthn ; for(int = 4 ; < lengthn * 4 ; *=4 ){ [self swap: data[ 4*i +3] : info [4*i+ 0]]; [self swap: data[ 4*i +2] : info [4*i+ 1]]; [self swap: data[ 4*i +1] : info [4*i+ 2]]; [self swap: data[ 4*i +0] : info [4*i+ 3]]; } - (void)swap:(int8_t)a :(int8_t)b { ^= b; b ^= a; ^= b; }

actual output

2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal -56 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 66 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.666 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.666 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.666 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.668 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.668 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.668 marker[2770:1000346] sdjhasdhal 65

desired output

2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 66 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal -56 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.665 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.666 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.666 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.666 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.667 marker[2770:1000346] sdjhasdhal 65 2014-10-31 18:09:21.668 marker[2770:1000346] sdjhasdhal 32 2014-10-31 18:09:21.668 marker[2770:1000346] sdjhasdhal 0 2014-10-31 18:09:21.668 marker[2770:1000346] sdjhasdhal 0

you using horrible, horrible, horrible trick swap bytes. in code review wouldn't have slightest chance through.

worse swap bytes 0 , 3 twice, , same bytes 1 , 2. guess happens when swap them twice? nothing.

you making assumptions byte ordering of processor (because in reality, don't want reverse bytes, want set them right ordering). that, memcpy float uint32_t, extract 4 bytes shifting contents of uint32_t 24, 16, 8 , 0 bits in order want. byte order of processor irrelevant.

ps. offended byte swapping code, didn't realise didn't pass in pointer...

pps. people hate spelling mistakes in variable names, "preffix".

ios byte nsdata uint8t

Comments

Popular posts from this blog

php - Edges appear in image after resizing -

ios8 - iOS custom keyboard - preserve state between appearances -

Delphi change the assembly code of a running process -