我想将十进制数转换为完全相同的二进制数。 例如。十进制(10)到二进制(10)。 将Dec(10000001110000110)转换为二进制(10000001110000110)。
我是perl的新手。我可以想到的Lame方法是将dec转换为字符串,并将string转换为二进制,但是我确信必须有一种更好的方法来实现它。
我正在使用一个函数来获取一个十进制数字数组。
#include<stdint.h>
#include<stdio.h>
static inline uint64_t rdtscp( uint32_t & aux )
{
uint64_t rax,rdx;
asm volatile ( "rdtscp\n" : "=a" (rax), "=d" (rdx), "=c" (aux) : : );
return (rdx << 32) + rax;
}
请注意,这是十进制数字,因为当我尝试从其元素中减去1时,我得到11110000-1 = 11109999。
我需要二进制格式的文件,以便可以对其进行逻辑与运算。
有人可以提出建议吗?
答案 0 :(得分:3)
将数字10000001110000110 10 转换为数字10000001110000110 2 非常容易。
oct('0b'.$_)
执行此操作。解决方案:
my @bad = ( 111110000, 110100010, ... );
my @fixed = map { oct('0b'.$_) } @bad; # 496, 418, ...
答案 1 :(得分:2)
如果我对您的理解正确,那么您需要这样做:
my $num = 101010;
print interpret_as_binary($num); # 42
您可以进行将数字除以2的工作,依此类推。或者,您可以利用oct
将以0b
开头的字符串解释为二进制数。
print oct("0b". $num);