我们知道double
可以存储从±4.94065645841246544e-324
到±1.79769313486231570e+308
的号码。我们可以在double
中存储像IPv6这样的128位值并按原样检索吗?例如,要存储IPv4,我们可以使用32位整数并将它们存储为8位分区。我们可以使用位屏蔽来检索它们。
没有标准容器可以在任何语言AFAIK中存储128位。我知道double
可以安全地存储64位而没有任何精度错误,但有没有黑客攻击?
答案 0 :(得分:7)
从技术上讲,如果sizeof(double) * CHAR_BITS
≥128(我的机器上是64位),你可以这么做,但为什么要那样做呢?使用sockaddr_in6
,或者如果必须,使用uint8_t
或std::bitset
的数组,而不是重新发明轮子。
答案 1 :(得分:3)
我不愿意使用双its size is unspecified。
如果您需要128位整数,我建议使用this question中所述的非标准类型。