1
0
mirror of https://github.com/php/php-src.git synced 2026-04-29 11:13:36 +02:00

add fast bin2hex string function

This commit is contained in:
Sascha Schumann
1999-05-16 11:12:23 +00:00
parent d886b84ef4
commit ed8a7dff62
2 changed files with 45 additions and 0 deletions
+1
View File
@@ -79,6 +79,7 @@ extern void php3_setlocale(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_stristr(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_chunk_split(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_parsestr(INTERNAL_FUNCTION_PARAMETERS);
PHP_FUNCTION(bin2hex);
extern PHPAPI char *_php3_strtoupper(char *s);
extern PHPAPI char *_php3_strtolower(char *s);
+44
View File
@@ -43,6 +43,50 @@
#include "zend_execute.h"
#include "php_globals.h"
static char hexconvtab[] = "0123456789abcdef";
static char *php_bin2hex(const char *old, const size_t oldlen, size_t *newlen)
{
char *new = NULL;
int i, j;
new = (char *) emalloc(oldlen * 2 * sizeof(char));
if(!new) {
return new;
}
for(i = j = 0; i < oldlen; i++) {
new[j++] = hexconvtab[old[i] >> 4];
new[j++] = hexconvtab[old[i] & 15];
}
if(newlen) *newlen = oldlen * 2 * sizeof(char);
return new;
}
/* proto bin2hex(string data)
converts the binary representation of data to hex */
PHP_FUNCTION(bin2hex)
{
pval *data;
char *new;
size_t newlen;
if(ARG_COUNT(ht) != 1 || getParameters(ht, 1, &data) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_string(data);
new = php_bin2hex(data->value.str.val, data->value.str.len, &newlen);
if(!new) {
RETURN_FALSE;
}
RETURN_STRINGL(new, newlen, 0);
}
/* {{{ proto int strlen(string str)
Get string length */