将带有十六进制值的字符串转换为php中布尔值的数组数组

时间:2015-09-21 23:11:38

标签: php arrays boolean hex

我在我正在研究的网站上发现了一些聪明的代码,它使用十六进制值来存储一组可切换变量。

(例如,十六进制中的D为二进制的1101,表示第一个切换为1,第二个为关闭,第三个和第四个为打开)。

我看了解包装,但要么我不理解它,要么它对我来说不是正确的功能。我还考虑逐个字符地分割整个事物,然后通过一个开关发送每个字符,然后将值放入数组中,但这似乎太麻烦和不优雅。

那么,如何将一串基于十六进制的字符转换为布尔值的有序数组?

1 个答案:

答案 0 :(得分:2)

怎么样:

function hex_to_bool_array($hex_string, $pad_length = 0) {
   return array_map(
      function($v) { return (bool) $v; },
      str_split(str_pad(base_convert($hex_string, 16, 2), $pad_length, '0', STR_PAD_LEFT))
   );
}

var_dump(hex_to_bool_array('D'));

// array (size=4)
//   0 => boolean true
//   1 => boolean true
//   2 => boolean false
//   3 => boolean true;

var_dump(hex_to_bool_array('7', 8));

// array (size=8)
// 0 => boolean false
// 1 => boolean false
// 2 => boolean false
// 3 => boolean false
// 4 => boolean false
// 5 => boolean true
// 6 => boolean true
// 7 => boolean true