我正在使用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/

10-11 20:37