我正在使用 C 语言的工具来计算一些传入/传出位,我想保留这些位而不是通过更改为字节来丢失它们。
最后我想显示下载/上传的 xxxxx 位。我将最大值放在 10GB=85899345920bits 上,这需要大约 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/