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]);
解决了第二天再加分
8 个解决方案
#1
不是很明白楼主的意思,楼主的意思把一个字符串改为一个数组表示?
#2
是的,要拷贝原字符串的几个长度到一个字节数组中
#3
是字节数组
#4
//先转成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两种方式.
#5
楼主试试
$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);
#6
up
#7
转成utf-8?
$S = iconv('xxx', 'utf-8', $S);
$S = iconv('xxx', 'utf-8', $S);
#8
xxx代表字符的编码
#1
不是很明白楼主的意思,楼主的意思把一个字符串改为一个数组表示?
#2
是的,要拷贝原字符串的几个长度到一个字节数组中
#3
是字节数组
#4
//先转成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两种方式.
#5
楼主试试
$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);
#6
up
#7
转成utf-8?
$S = iconv('xxx', 'utf-8', $S);
$S = iconv('xxx', 'utf-8', $S);
#8
xxx代表字符的编码