我正在编写一个代码,其中我需要将某些形式的no转换为二进制no进行某些处理。我想要基于存储在变量中的值的二进制no的大小,为此我需要附加一些前导零。 例如,假设变量$ size = 15 现在我想将十进制的no转换为15位二进制
我知道如何手动计数 对于前- 如果我们要从小数点开始的8位二进制数否,那么我们将使用-
$data_binary = sprintf( "%08b", $initial_data );
但是如果大小存储在某个变量中,如何指定二进制数的大小呢?
例如=
If size =10
decimal no =12
required binary no = 0000001100
答案 0 :(得分:1)
printf "%0*b\n", 10, 12
例如,
0000001100
打印
$size
如果您的数字的二进制表示形式包含超过substr
位,则不会被截断。根据您的用例,您可能要在其后添加一个configure: creating ./config.status
config.status: creating src/Makevars
** libs
gcc -std=gnu99 -I/opt/microsoft/ropen/3.5.1/lib64/R/include -DNDEBUG -pthread -DU_STATIC_IMPLEMENTATION -fpic -DU_STATIC_IMPLEMENTATION -O2 -g -c tcltkimg.c -o tcltkimg.o
tcltkimg.c:3:16: fatal error: tk.h: No such file or directory
compilation terminated.
/opt/microsoft/ropen/3.5.1/lib64/R/etc/Makeconf:159: recipe for target 'tcltkimg.o' failed
make: *** [tcltkimg.o] Error 1
(但是如果您确实需要这样做,我会感到惊讶)。
答案 1 :(得分:-1)
您可以使用一个sprintf为另一个sprintf生成格式字符串。
[有多种方法可以做到这一点]
use strict; use warnings;
my $binary_length = 10;
my $initial_data = 12;
my $format = sprintf('%%0%db', int($binary_length));
my $data_binary = sprintf( $format, $initial_data );
print $data_binary,"\n";