Objective c 未使用memcpy建立流

Objective c 未使用memcpy建立流,objective-c,c,cocoa,Objective C,C,Cocoa,我不知道为什么我会得到一个strlen,24等于40? thx 因为您在内存中存储数据,并且在第24个字节的一个双值的二进制表示中有一个零,因为您在内存中存储数据,并且在第24个字节的一个双值的二进制表示中有一个零,因为strlen查找设置为零的单字节,它在达到41.25时停止,因为它的八个字节中有五个是零 41.25转换为double成为0x4044A00000000000由于strlen查找设置为零的单个字节,它在到达41.25时停止,因为它的八个字节中有五个是零 41.25转换为doubl

我不知道为什么我会得到一个strlen,24等于40? thx


因为您在内存中存储数据,并且在第24个字节的一个双值的二进制表示中有一个零,因为您在内存中存储数据,并且在第24个字节的一个双值的二进制表示中有一个零,因为
strlen
查找设置为零的单字节,它在达到
41.25
时停止,因为它的八个字节中有五个是零


41.25
转换为
double
成为
0x4044A00000000000

由于
strlen
查找设置为零的单个字节,它在到达
41.25
时停止,因为它的八个字节中有五个是零


41.25
转换为
double
后变成
0x4044A00000000000
Strlen在找到的第一个空字节处终止,因此它不是查找缓冲区中字节数的合适函数。

Strlen在找到的第一个空字节处终止,因此它不是查找缓冲区中字节数的合适函数缓冲区中的字节。

要将二进制数据转换为字符串,可以使用
sprintf()


按照您的方式进行操作,将数据保留为二进制格式,这与字符串表示完全不同。

要将二进制数据转换为字符串,可以使用
sprintf()


按照您的方式进行操作,会将数据保留为二进制格式,这与字符串表示完全不同。

我应该使用什么来查找长度?@jdl我的最佳猜测是
sizeof(double)*(j+1)
。如果您正在进行操作,则无法找到长度,你需要跟踪它。我应该用什么来找到长度?@jdl我最好的猜测是
sizeof(double)*(j+1)
。如果你在做你正在做的事情,你就找不到长度,你需要跟踪它。
            char bufferData[1000];
            memset(bufferData, '\0', 1000);
            long j;
            long offset;
            double mice;

            mice = 32.45;
            j=0;
            offset = sizeof(double) * j;
            NSLog(@"offset: %d", offset);
            memcpy(bufferData+offset, &mice, sizeof(double));
            mice = 21.35;
            j=1;
            offset = sizeof(double) * j;
            NSLog(@"offset: %d", offset);
            memcpy(bufferData+offset, &mice, sizeof(double));
            mice = 11.55;
            j=2;
            offset = sizeof(double) * j;
            NSLog(@"offset: %d", offset);
            memcpy(bufferData+offset, &mice, sizeof(double));
            mice = 41.25;
            j=3;
            offset = sizeof(double) * j;
            NSLog(@"offset: %d", offset);
            memcpy(bufferData+offset, &mice, sizeof(double));
            mice = 51.50;
            j=4;
            offset = sizeof(double) * j;
            NSLog(@"offset: %d", offset);
            memcpy(bufferData+offset, &mice, sizeof(double));

            NSLog(@"sizeof(double): %d     strlen(bufferData): %d", sizeof(double), strlen(bufferData));
        }