求高手帮我转换一下函数,是要得到字节数组:Delphi版:
InBuf: array[0..2] of byte; //3字节数组
Move(S[1], InBuf, 3)  //拷贝S[1]开始的3个到inbuf里别的语言1:
CString szTmep="字符串!";
char szArr[32];memcpy(szArr,szTemp.Getbuffer(),32);别的语言2:
string str = "E4B8AD";
                byte[] b = new byte[str.Length/2];
                for (int i = 0; i < b.Length; i++)
                {
                    b[i] = byte.Parse(str.Substring (i*2,2), NumberStyles.HexNumber);
                } 
跪求把delphi版的转成php的,找了很多资料找不到,小弟自己转了一个,是错的:
 $InBuf = substr($S,1,3); 
for($k=0; $k<strlen($InBuf); $k++) $InBuf[$k] = ord($InBuf[$k]); 
解决了第二天再加分

解决方案 »

  1.   


    //先转成utf-8的
    $S = iconv('xxx', 'utf-8', $S);
    $InBuf = substr($S,1,3); 
    for($k=0; $k <strlen($InBuf); $k++) 
    {
      $InBuf[$k] = ord($InBuf[$k]);
    }其实你的需求不明确.
    因为php里不同编码以及中文都要特殊处理的.
    中文在utf-8编码情况下,是占3个字符长度的.
    不知道这种情况下你要如何处理.比如说$str = "sfa中";
    用echo strlen($str);//6
    echo mb_strlen($str, 'utf-8');//4
    同理切割的时候也要分substr, mb_substr两种方式.
      

  2.   


    $arr=array();
    $str='中国人123';
    $len=strlen($str);
    for($i=0;$i<$len;$i++){
        if(ord(substr($str,$i,1))>0xa0){
           $arr[$i]= substr($str,$i,2);//汉字双字节
       $i++;
            }else{
             $arr[$i]=substr($str,$i,1);//单字节
                }
    }
    $narr=array_values($arr);
    print_r($narr);
    楼主试试
      

  3.   

    转成utf-8?
    $S = iconv('xxx', 'utf-8', $S);