2009-09-18 5 views
0

В PHP У меня есть массив байтов, который я хочу превратить в одну переменную.Создайте переменную из массива байтов

$bytes = array(0x12, 0x8D, 0x9D, 0x40, 0x09, 0x64, 0x5A, 0x6E); 

Я полагал, что я мог бы создать строку следующим образом:

$string = chr(0x12).chr(0x8D)......; 

, но это кажется Hacky.

Любые предложения?

+0

Что значит «одна переменная»? –

+0

Я хочу, чтобы одна переменная содержала все байты, поэтому я могу передать ее другой функции (mcrypt stuff). –

ответ

1
$string=implode('',array_map('chr',array(0x8D, 0x9D, 0x40, 0x09, 0x64, 0x5A, 0x6E))); 

echo $$string; //given that you also have a variable named whatever the bytecode translates to. 
+0

Пожалуйста, отформатируйте свой код. – Gumbo

0

Я закончил делать то же самое, что и девушка dna, но более подробно.

Также, поскольку массив поступает из ini-файла, массив не распознается как шестнадцатеричные значения. поэтому я добавил intval().

function getInitializationVector() { 
    $ini = parse_ini_file('foo.ini'); 
    $stringVector = explode(',', $ini['initialization_vector']); 
    $iv = ''; 
    foreach($stringVector as $theByte) { 
     $iv .= chr(intval($theByte, 16)); 
    } 
    return $iv; 
} 

foo.ini:

initialization_vector=0x8D,0x9D,0x40,0x09,0x64,0x5A,0x6E,0xD4 

P.S. Вам не нужно хранить ваши IV, если вы правильно набрали. (но это еще одна история ...)

Смежные вопросы