如何在c ++中获得任意大数?

时间:2017-02-19 01:20:51

标签: c++ data-structures arbitrary-precision

我需要一种方法来使用非常大的数据类型。虽然int通常是4个字节,但我需要536,870,912字节或甚至更高的数据类型。我不能只使用一个数组,因为我需要能够转换为字符串,加,减,乘,除等等。

如何创建或使用如此大的数据类型?我需要一个uint4294967296_t:P

注意我已尝试使用带有位域的结构,但它们不够大,我无法使用它进行值转换。

1 个答案:

答案 0 :(得分:2)

使用Bignumber库,我更喜欢TTMath。你可以在Link to tttmath找到它。 TTTmath允许对大数字进行操作,但您可能需要创建自己的toString方法。

以下是其Samples页面中使用的TTTmath示例:

COPY INTO @myS3stage/folder from 
  (select $1||'|'||$2||'|'||  $3||'|'||   $4||'|'||   $5||'|'||$6||'|'||  $7||'|'||   $8||'|'|| $9||'|'|| $10||'|'||   $11||'|'||   $12||'|'||    $13||'|'||  $14||'|'||$15||'|'||    $16||'|'||  $17||'|'||$18||'|'||$19||'|'||  $20||'|'||  $21||'|'||  $22||'|'||  $23||'|'||  $24||'|'|| $25||'|'||26||'|'||  $27||'|'||  $28||'|'||  $29||'|'||  $30||'|'||  $31||'|'||  $32||'|'||  $33||'|'||  $34||'|'||  $35||'|'||  $36||'|'||  $37||'|'||  $38||'|'||    $39||'|'||    $40||'|'||  $41||'|'||  $42||'|'|| $43 
   from @snowflakeStage(PATTERN => '*/*.txt.bz2'))
CREDENTIALS = (AWS_KEY_ID = '*****' AWS_SECRET_KEY = '*****' )
file_format=(TYPE='CSV');