将具有十六进制值的字符串转换为 php 中的布尔值数组
Convert a string with hex values to an array array of boolean values in php
我在我正在处理的站点中发现了一段巧妙的代码,它使用十六进制值来存储可切换变量的数组。
(例如,十六进制的D为二进制的1101,表示第一个拨动是一个,第二个是关闭的,第三个和第四个是打开的)。
我查看了 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
我在我正在处理的站点中发现了一段巧妙的代码,它使用十六进制值来存储可切换变量的数组。
(例如,十六进制的D为二进制的1101,表示第一个拨动是一个,第二个是关闭的,第三个和第四个是打开的)。
我查看了 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