Printing Arbitrary Precision integers
(Ask a Question)The C++ Arbitrary Precision Integer Library provides some utilities for printing
ap_[u]int
types. The to_string(base, signedness)
function takes an optional base argument (one of 2, 10, and 16) which defaults to 16, as
well as an optional signedness argument which determines if the data should be printed as
signed or unsigned, which defaults to false. The output stream operator
<<
is also overloaded to put arbitrary precision integer types in
the output stream as if they were called with the default to_string
arguments.
Some example code using these utilities is shown below.
#include "hls/ap_int.hpp" #include <iostream> #include <stdio.h> using namespace hls;
//... ap_uint<8> ap_u = 21; ap_int<8> ap = -22; // prints: 0x15 std::cout << "ap_u = 0x" << ap_u << std::endl; // prints: -22 std::cout << "ap.to_string(10,true) = " << ap.to_string(10, true) << std::endl; // prints: 234 std::cout << "ap.to_string(10) = " << ap.to_string(10) << std::endl; // prints 00010101 printf("ap_u.to_string(2) = %s\n", ap_u.to_string(2).c_str());