gpt4 book ai didi

objective-c - NSString stringWithFormat 中的 `size_t`

转载 作者:行者123 更新时间:2023-12-03 17:34:59 26 4
gpt4 key购买 nike

我有一个 size_t 变量,我将在 NSLog 中显示。该变量包含发送的字节数。

如果我使用这个: NSLog(@"%zu",myvariable); 我没有错误消息,但数字溢出,并且 NSLog 输出始终显示低于 32.768 的数字。这是为什么? Long 不应该显示从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的值吗?

这是一些代码。我想在 NSlog self.bufferOffset 中显示,这应该是发送的字节的大约数量。

        // If we don't have any data buffered, go read the next chunk of data.

if (self.bufferOffset == self.bufferLimit) {
NSInteger bytesRead;

bytesRead = [self.fileStream read:self.buffer maxLength:kSendBufferSize];

if (bytesRead == -1) {
[self stopSendWithStatus:@"File read error"];
} else if (bytesRead == 0) {
[self stopSendWithStatus:nil];
} else {
self.bufferOffset = 0;
self.bufferLimit = bytesRead;
}
}

// If we're not out of data completely, send the next chunk.

if (self.bufferOffset != self.bufferLimit) {
NSInteger bytesWritten;
bytesWritten = [self.networkStream write:&self.buffer[self.bufferOffset] maxLength:self.bufferLimit - self.bufferOffset];
assert(bytesWritten != 0);
if (bytesWritten == -1) {
[self stopSendWithStatus:@"Network write error"];
} else {
self.bufferOffset += bytesWritten;
}

}

NSLog (@"%lu",self.bufferOffset);

这是一些输出:

  2013-02-24 15:54:39.674 prog[298:303] 32768
2013-02-24 15:54:39.728 prog[298:303] 4820
2013-02-24 15:54:39.791 prog[298:303] 10820
2013-02-24 15:54:39.853 prog[298:303] 16580
2013-02-24 15:54:39.911 prog[298:303] 23780
2013-02-24 15:54:39.965 prog[298:303] 28100
2013-02-24 15:54:40.024 prog[298:303] 32768
2013-02-24 15:54:40.080 prog[298:303] 6852
2013-02-24 15:54:40.139 prog[298:303] 14052
2013-02-24 15:54:40.197 prog[298:303] 18372

最佳答案

代码中的

self.bufferOffset 是缓冲区中第一个已读取但尚未写入的字节的偏移量,因此您将始终拥有

 self.bufferOffset <= kSendBufferSize

这(希望)解释了为什么 NSLog() 输出受到 32768 的限制。

self.bufferOffset 不是写入的总字节数。

备注:正如其他人已经评论的那样,%zu 格式可以与 size_t 变量一起正常工作。在 64 位平台上,size_t 是一个 64 位无符号整数。示例:

size_t s = 18446744073709551615ULL; // 2^64-1
NSLog(@"%zu", s);
// Output: 18446744073709551615

关于objective-c - NSString stringWithFormat 中的 `size_t`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15052676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com