ArrayBuffer與字符串的互相轉換
阿新 • • 發佈:2019-05-12
reac mage als utf-16 xpl tails 轉換成 進制數 unset
ArrayBuffer與字符串的互相轉換
ArrayBuffer轉為字符串,或者字符串轉為ArrayBuffer,有一個前提,即字符串的編碼方法是確定的。假定字符串采用UTF-16編碼(JavaScript的內部編碼方式),可以自己編寫轉換函數。
// ArrayBuffer轉為字符串,參數為ArrayBuffer對象 function ab2str(buf) { return String.fromCharCode.apply(null, new Uint16Array(buf)); } // 字符串轉為ArrayBuffer對象,參數為字符串 function str2ab(str) {var buf = new ArrayBuffer(str.length*2); // 每個字符占用2個字節 var bufView = new Uint16Array(buf); for (var i=0, strLen=str.length; i<strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; }
PHP接收二進制流並生成文件
<?php /** 二進制流生成文件 * $_POST 無法解釋二進制流,需要用到 $GLOBALS[‘HTTP_RAW_POST_DATA‘] 或 php://input * $GLOBALS[‘HTTP_RAW_POST_DATA‘] 和 php://input 都不能用於 enctype=multipart/form-data * @param String $file 要生成的文件路徑 * @return boolean*/ function binary_to_file($file){ $content = $GLOBALS[‘HTTP_RAW_POST_DATA‘]; // 需要php.ini設置 if(empty($content)){ $content = file_get_contents(‘php://input‘); // 不需要php.ini設置,內存壓力小 } $ret = file_put_contents($file, $content, true); return $ret; }// demo binary_to_file(‘photo/test.png‘); ?>
php 字符串轉二進制流
<? header("Content-type: text/html; charset=utf-8"); /** * 將字符串轉換成二進制 * @param type $str * @return type */ function StrToBin($str){ //1.列出每個字符 $arr = preg_split(‘/(?<!^)(?!$)/u‘, $str); //2.unpack字符 foreach($arr as &$v){ $temp = unpack(‘H*‘, $v); $v = base_convert($temp[1], 16, 2); unset($temp); } return join(‘ ‘,$arr); } /** * 講二進制轉換成字符串 * @param type $str * @return type */ function BinToStr($str){ $arr = explode(‘ ‘, $str); foreach($arr as &$v){ $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16)); } return join(‘‘, $arr); }
php關於發送和接受二進制數據
之前做一個項目,從文件中讀取圖片為二進制,然後需要發送給客戶端,由於echo輸出的字符串只能為utf8編碼的,所以弄了很久也不知道要怎麽把二進制發出去,今天終於找到了解決的辦法,把讀出的二進制用base64進行編碼之後,就可以向字符串一樣使用了。代碼如下:
$my_file = file_get_contents(‘1.jpg’);//讀取文件為字符串
$data=base64_encode($my_file);//用base64對字符串編碼
echo $data;//發送
php將圖片轉成二進制流
//獲取臨時文件名 $strTmpName = $_FILES[‘file‘][‘tmp_name‘]; //轉成二進制流 $strData = base64EncodeImage(strTmpName ); //輸出 echo ‘<img src=‘,$strData,‘>‘; function base64EncodeImage($strTmpName) { $base64Image = ‘‘; $imageInfo = getimagesize($strTmpName); $imageData = fread(fopen($strTmpName , ‘r‘), filesize($strTmpName)); $base64Image = ‘data:‘ . $imageInfo[‘mime‘] . ‘;base64,‘ . chunk_split(base64_encode($imageData)); return $base64Image; }
相關鏈接:
https://www.cnblogs.com/copperhaze/p/6149041.html
https://blog.csdn.net/fdipzone/article/details/7473949#
https://zhidao.baidu.com/question/1694649074633248428.html
https://www.cnblogs.com/cyn126/p/3291624.html
https://blog.csdn.net/onlymayao/article/details/86170721
ArrayBuffer與字符串的互相轉換