我有这样的代码.
$entry = &function(); //returns a number between 0 to 20
$var = sprintf("%#.4x", $entry);
if($var=~ /$hex/)
{
//block of statements
}
Run Code Online (Sandbox Code Playgroud)
$ hex将在0x0000 ..... 0x0014内.现在,当function从1到20返回时,$ var匹配$ hex.(如0x0001 .... 0x0014)
但是当$ entry为0时,$ var变为0000.但我希望它是0x0000.目前,我正在检查是否0000,我正在通过if循环更改它.如果sprintf本身有可能,请告诉我.
根据sprintf的文档:
flags
#前缀非零十六进制,带"0x"或"0X"
请注意,它说non-zero,因此只有非零值将作为前缀0x.
一个简单的解决方法是手动添加前缀:
sprintf "0x%04x", $entry;
Run Code Online (Sandbox Code Playgroud)