diff --git a/include/fc/variant.hpp b/include/fc/variant.hpp index 279b7de..2098a70 100644 --- a/include/fc/variant.hpp +++ b/include/fc/variant.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -663,14 +664,14 @@ namespace fc template void to_variant( const std::array& bi, variant& v, uint32_t max_depth = 1 ) { - to_variant( std::vector( bi.begin(), bi.end() ), v, 1 ); + v = variant( to_hex( bi.data(), N ) ); } template void from_variant( const variant& v, std::array& bi, uint32_t max_depth = 1 ) { - std::vector ve = v.as< std::vector >( 1 ); + std::string ve = v.as_string(); if( ve.size() ) - memcpy( bi.data(), ve.data(), std::min( ve.size(), bi.size() ) ); + from_hex( ve, bi.data(), std::min( ve.size() / 2, bi.size() ) ); else memset( bi.data(), 0, bi.size() ); } @@ -678,14 +679,14 @@ namespace fc template void to_variant( const std::array& bi, variant& v, uint32_t max_depth = 1 ) { - to_variant( std::vector( bi.begin(), bi.end() ), v, 1 ); + v = variant( to_hex( (char*) bi.data(), N ) ); } template void from_variant( const variant& v, std::array& bi, uint32_t max_depth = 1 ) { - std::vector ve = v.as< std::vector >( 1 ); + std::string ve = v.as_string(); if( ve.size() ) - memcpy( bi.data(), ve.data(), std::min( ve.size(), bi.size() ) ); + from_hex( ve, (char*)bi.data(), std::min( ve.size() / 2, bi.size() ) ); else memset( bi.data(), 0, bi.size() ); }