在C++中表示128位数的最佳方法是什么?它应该尽可能地与内置数值类型一致(即支持所有算术运算符等).
我正在考虑构建一个具有2个64位或4个32位数的类.或者可能只是创建一个128位的内存块并自己完成所有操作.
是否有一些更容易/更标准的方式,或者我自己实施它时不太可能搞砸的东西?:)
如果它可以扩展到256位,512位等等也会很好...
我正在为128位数字的长流写一个压缩器.我想将数字存储为差异 - 仅存储数字之间的差异而不是数字本身,因为我可以将差异打包在更少的字节中,因为它们更小.
但是,对于压缩,我需要减去这些128位值,对于解压缩,我需要添加这些值.我的编译器的最大整数大小是64位宽.
任何人有任何想法有效地做到这一点?
我在Mac OS X上使用clang(CXX ='clang ++ -std = c ++ 11 -stdlib = libc ++'),增强1.53.0.
我想在unordered_map中使用uuid作为键,但是会出现以下错误:
/usr/bin/../lib/c++/v1/type_traits:748:38: error: implicit instantiation of undefined template
'std::__1::hash<boost::uuids::uuid>'
: public integral_constant<bool, __is_empty(_Tp)> {};
^
/usr/bin/../lib/c++/v1/unordered_map:327:54: note: in instantiation of template class
'std::__1::is_empty<std::__1::hash<boost::uuids::uuid> >' requested here
template <class _Key, class _Tp, class _Hash, bool = is_empty<_Hash>::value
Run Code Online (Sandbox Code Playgroud)
...
/usr/bin/../lib/c++/v1/unordered_map:327:71: error: no member named 'value' in
'std::__1::is_empty<std::__1::hash<boost::uuids::uuid> >'
template <class _Key, class _Tp, class _Hash, bool = is_empty<_Hash>::value
~~~~~~~~~~~~~~~~~^
Run Code Online (Sandbox Code Playgroud)
...
它是什么 - Boost中的一个错误,它使它与我的C++ lib不兼容?或者我做错了什么?任何解决方法?
我的目标是将时间戳存储在纳秒范围内.假设我有两台机器需要在任务完成的时间进行通信.
让我们只是为了问题,说他们是同步时钟.
机器A在完成后存储当地时间.机器B发送到A,此时它完成.机器A然后计算差异.
我的问题是,时差实际上可以达到60秒,但也可以降到.25ms.所以我需要以这样的方式存储时间,我可以处理两者,并计算时差.
由于纳秒时代以来的时间是如此之大,我认为我不能将其存储在我所知道的任何变量中.
你会如何解决这种情况?我当前的情况是,我可能(某种程度上)可以缩短从ns开始的时间到代表1分钟的时间,但我不知道该怎么做.
希望你能帮忙.
最好的祝福
我使用 std::bitset 来表示短 DNA 序列(单倍型)。出于我的目的,我需要能够将每个这样的序列转换为单个整数。目前,由于 std::bitset::to_ullong 的工作方式,此要求似乎将我的序列长度限制为 <=64?
由于 C++ 有多种表示 128 位整数的方法(C++ 中有 128 位整数吗?),我想知道 std::bitset 支持直接转换为 128 位整数需要多长时间?
当然,如果我知道我错了并且人们已经可以做到这一点,我会非常高兴......
谢谢!
我正在尝试在 C++ 中将一个超大的十六进制数转换为十进制数。
例如:
十六进制:abc6a806bf5ac415016905a8de6e026c
十进制:228329470036614264874173405720560403052
我想从上面的例子中得到十进制 % 60 = 52 。
我知道我可以做类似的事情
int(abc6a806bf5ac415016905a8de6e026c, 16) % 60
Run Code Online (Sandbox Code Playgroud)
在Python中
但我不知道如何在C++中实现
c++ ×6
128-bit ×1
boost ×1
boost-uuid ×1
c++-chrono ×1
c++11 ×1
c++17 ×1
clang ×1
int128 ×1
integer ×1
math ×1
std-bitset ×1
time ×1