* @param $hex Hexadecimal string
* @return $dec Decimal number
*/
- public final function hex2dec ($hex) {
+ protected function hex2dec ($hex) {
// Convert to all lower-case
$hex = strtolower($hex);
* This work is based on comment #97756 on php.net documentation page at:
* <http://de.php.net/manual/en/function.hexdec.php#97756>
*
- * @param $dec Decimal number, even with negative sign
+ * @param $dec Decimal number, even with negative sign
+ * @param $maxLength Optional maximum length of the string
* @return $hex Hexadecimal string
*/
- public final function dec2hex ($dec) {
+ protected function dec2hex ($dec, $maxLength = 0) {
+ // maxLength can be zero or devideable by 2
+ assert(($maxLength == 0) || (($maxLength % 2) == 0));
+
// Detect sign (negative/positive numbers)
$sign = '';
if ($dec < 0) {
* We need hexadecimal strings with leading zeros if the length cannot
* be divided by 2
*/
- if ((strlen($hex) % 2) != 0) {
- // Prepend a zero
+ if ($maxLength > 0) {
+ // Prepend more zeros
+ $hex = $this->prependStringToString($hex, '0', $maxLength);
+ } elseif ((strlen($hex) % 2) != 0) {
$hex = '0' . $hex;
- } // END - if
+ }
// Return the hexadecimal string
return $sign . $hex;
* @param $asc The ASCII string to be converted
* @return $dec Decimal number
*/
- public final function asc2dec ($asc) {
+ protected function asc2dec ($asc) {
// Convert it into a hexadecimal number
$hex = bin2hex($asc);
/**
* Converts a decimal number into an ASCII string.
*
- * @param $dec Decimal number
+ * @param $dec Decimal number
* @return $asc An ASCII string
*/
- public final function dec2asc ($dec) {
+ protected function dec2asc ($dec) {
// First convert the number into a hexadecimal string
$hex = $this->dec2hex($dec);
* @param $hex Hexadecimal string
* @return $asc An ASCII string
*/
- public final function hex2asc ($hex) {
+ protected function hex2asc ($hex) {
// Check for length, it must be devideable by 2
+ //* DEBUG: */ $this->debugOutput('hex='.$hex);
assert((strlen($hex) % 2) == 0);
// Walk the string
// Return the final string
return $asc;
}
+
+ /**
+ * Prepends a given string $prepend to $str with a given total length
+ *
+ * @param $str Given original string which should be prepended
+ * @param $prepend The string to prepend
+ * @param $length Total length of the final string
+ * @return $strFinal Final prepended string
+ */
+ protected function prependStringToString ($str, $prepend, $length) {
+ // Set final string to original string by default
+ $strFinal = $str;
+
+ // Can it devided
+ if (strlen($str) < $length) {
+ // Difference between total length and length of original string
+ $diff = $length - strlen($str);
+
+ // Prepend the string
+ $prepend = str_repeat($prepend, ($diff / strlen($prepend) + 1));
+
+ // Make sure it will definedly fit
+ assert(strlen($prepend) >= $diff);
+
+ // Cut it a little down
+ $prepend = substr($prepend, 0, $diff);
+ //* DEBUG: */ $this->debugOutput('prepend('.strlen($prepend).')='.$prepend.',diff='.$diff.',length='.$length);
+
+ // Construct the final prepended string
+ $strFinal = $prepend . $str;
+ } // END - if
+
+ // Return it
+ return $strFinal;
+ }
}
// [EOF]