我将使用 iOS Objective-C 创建字节数组作为所需的输出。该方法是从静态浮点数组转换为 int8_t 数组字节数组。说到实现,我发现float数组中每个float的所有字节都是按顺序颠倒的。输出显示为实际输出。您能告诉我如何转换每个字节并显示为所需的输出吗?以下是我的工作:
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 prefix[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 *) &prefix, sizeof(prefix));
memcpy (data+4, (int8_t *) &floatArray, lengthN );
int length = (int)lengthN + 5;
int checkSum = 119 + 97 + (int)lengthN ;
for(int i = 4 ; i < lengthN * 4 ; i *=4 ){
[self swap: data[ 4*i +3] : data [4*i+ 0]];
[self swap: data[ 4*i +2] : data [4*i+ 1]];
[self swap: data[ 4*i +1] : data [4*i+ 2]];
[self swap: data[ 4*i +0] : data [4*i+ 3]];
}
- (void)swap:(int8_t)a :(int8_t)b {
a ^= b;
b ^= a;
a ^= b;
}
实际输出
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
期望的输出
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