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


Convert a string with hex values to an array array of boolean values in php

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

(例如,十六进制中的D是二进制中的1101,这意味着第一个开关是1,第二个开关是关闭的,第三和第四个开关是打开的)。

我看了看unpack,但要么我不理解它,要么它不适合我。我也考虑过逐个字符拆分整个内容,然后将每个字符通过开关发送,然后将值放入数组中,但这似乎太麻烦且不美观了。

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

如何:

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