我正在使用C语言中的一个工具来计算一些传入/传出的位,我希望保留这些位,而不是通过更改为字节来丢失它们。
最后,我想显示已下载/上传的xxxxx位。我把最大值放在大约需要35位的位上。我用的是32位操作系统。
我试过unsigned long和unsigned int,但它们都重载了。
有什么简单的方法可以得到加法过程并保持准确性?
最佳答案
您可以采用一种混合方法:将字节数存储到一个变量中,将额外的字节数存储到另一个变量中。与POSIX系统以秒和微秒两种方式返回自纪元以来的时间类似:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
当您得到
1505
位的传输时,存储:bytes += (1505/8); // ==188
bits += (1505%8); // ==1
这样你就可以跟踪比特。
或者你可以把所有的乐趣都拿出来,使用
long long
。关于c++ - 精度此外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4968440/