[英]Is there a faster way to get floating point bits than pack/unpack in Perl?
在Perl中,有沒有比打包打包更快的方法來獲取浮點位? 不必是IEEE754
您的問題毫無道理。 您需要一種快速的方法來緩慢地做某事。 如果我們知道您真正想做什么 ,我們可以提供更好的解決方案。
use strict;
use warnings;
use feature qw( say );
use Inline C => <<'__EOS__';
void cast_double_to_uv(SV* sv) {
dXSARGS;
double d = (double)SvNV(sv);
UV uv;
if (sizeof(uv) < sizeof(double))
croak("Integers too small to hold a double.");
if (BYTEORDER == 0x1234) {
/* Little-endian */
memcpy(&uv, &d, sizeof(double));
if (sizeof(uv) > sizeof(double))
memset(((char*)&uv)+sizeof(double), 0, sizeof(double)-sizeof(uv));
} else {
/* Big-endian */
if (sizeof(uv) > sizeof(double))
memset(&uv, 0, sizeof(double)-sizeof(uv));
memcpy(((char*)&uv)+sizeof(double)-sizeof(uv), &d, sizeof(double));
}
XSRETURN_UV(uv);
}
__EOS__
say cast_double_to_uv(5.5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.