Created
March 31, 2016 19:17
-
-
Save alesegdia/4eb4c6860d7e4d53e3d493e287c66b2c to your computer and use it in GitHub Desktop.
utility to count bytes in a USB descriptor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$buffer = ""; | |
while($f = fgets(STDIN)) | |
{ | |
$buffer = $buffer . $f; | |
} | |
function valid_byte($str) | |
{ | |
$str = trim($str); | |
$byte = preg_match('/^0x[0-9A-Fa-f]*$/', $str); | |
$constant = preg_match('/^[A-Z_]+$/', $str); | |
return ($byte || $constant); | |
} | |
function flatten($array) | |
{ | |
$iter = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); | |
$flat_arr = iterator_to_array($iter, false); | |
return $flat_arr; | |
} | |
$data = split("\n", $buffer); | |
$data = flatten($data); | |
$data = array_map(function($str) { return split("//", $str); }, $data); | |
$data = array_map(function($arr) { return trim($arr[0]); }, $data); | |
$data = array_map(function($arr) { return split(",", $arr); }, $data); | |
$data = flatten($data); | |
$data = array_filter($data, "valid_byte"); | |
print(count($data)); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment