相关疑难解决方法(0)

用C++表示128位数字

在C++中表示128位数的最佳方法是什么?它应该尽可能地与内置数值类型一致(即支持所有算术运算符等).

我正在考虑构建一个具有2个64位或4个32位数的类.或者可能只是创建一个128位的内存块并自己完成所有操作.

是否有一些更容易/更标准的方式,或者我自己实施它时不太可能搞砸的东西?:)

如果它可以扩展到256位,512位等等也会很好...

c++ math

55
推荐指数
6
解决办法
7万
查看次数

如果我的编译器不支持它们,如何在C或C++中添加和减去128位整数?

我正在为128位数字的长流写一个压缩器.我想将数字存储为差异 - 仅存储数字之间的差异而不是数字本身,因为我可以将差异打包在更少的字节中,因为它们更小.

但是,对于压缩,我需要减去这些128位值,对于解压缩,我需要添加这些值.我的编译器的最大整数大小是64位宽.

任何人有任何想法有效地做到这一点?

c++ integer 128-bit

23
推荐指数
4
解决办法
3万
查看次数

boost :: uuids :: uuid作为std :: unordered_map中的键?

我在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不兼容?或者我做错了什么?任何解决方法?

c++ boost clang boost-uuid

7
推荐指数
1
解决办法
4461
查看次数

存储时间戳以纳秒为单位c ++

我的目标是将时间戳存储在纳秒范围内.假设我有两台机器需要在任务完成的时间进行通信.

让我们只是为了问题,说他们是同步时钟.
机器A在完成后存储当地时间.机器B发送到A,此时它完成.机器A然后计算差异.

我的问题是,时差实际上可以达到60秒,但也可以降到.25ms.所以我需要以这样的方式存储时间,我可以处理两者,并计算时差.

由于纳秒时代以来的时间是如此之大,我认为我不能将其存储在我所知道的任何变量中.

你会如何解决这种情况?我当前的情况是,我可能(某种程度上)可以缩短从ns开始的时间到代表1分钟的时间,但我不知道该怎么做.

希望你能帮忙.

最好的祝福

c++ time c++11 c++-chrono

3
推荐指数
2
解决办法
4329
查看次数

是否希望在不久的将来将 std::bitset&lt;128&gt; 转换为单个 128 位整数?

我使用 std::bitset 来表示短 DNA 序列(单倍型)。出于我的目的,我需要能够将每个这样的序列转换为单个整数。目前,由于 std::bitset::to_ullong 的工作方式,此要求似乎将我的序列长度限制为 <=64?

由于 C++ 有多种表示 128 位整数的方法(C++ 中有 128 位整数吗?),我想知道 std::bitset 支持直接转换为 128 位整数需要多长时间?

当然,如果我知道我错了并且人们已经可以做到这一点,我会非常高兴......

谢谢!

c++ int128 unsigned-long-long-int std-bitset

2
推荐指数
1
解决办法
727
查看次数

如何在 C++ 中将额外的较大十六进制数转换为十进制数

我正在尝试在 C++ 中将一个超大的十六进制数转换为十进制数。

例如:

十六进制:abc6a806bf5ac415016905a8de6e026c

十进制:228329470036614264874173405720560403052

我想从上面的例子中得到十进制 % 60 = 52 。

我知道我可以做类似的事情

int(abc6a806bf5ac415016905a8de6e026c, 16) % 60  
Run Code Online (Sandbox Code Playgroud)

在Python中

但我不知道如何在C++中实现

c++ unsigned-long-long-int c++17

0
推荐指数
1
解决办法
152
查看次数