求c#大神帮我改个程序

xiejing1995 2017-11-29 04:06:03
function GetGB2312String($name)
{
$tostr = "";
for($i=0;$i<strlen($name);$i++)
{
$curbin = ord(substr($name,$i,1));
if($curbin < 0x80)
{
$tostr .= substr($name,$i,1);
}elseif($curbin < bindec("11000000")){
$str = substr($name,$i,1);
$tostr .= "&#".ord($str).";";
}elseif($curbin < bindec("11100000")){
$str = substr($name,$i,2);
$tostr .= "&#".GetUnicodeChar($str).";";
$i += 1;
}elseif($curbin < bindec("11110000")){
$str = substr($name,$i,3);
$gstr= iconv("UTF-8","GB2312",$str);
if(!$gstr)
{
$tostr .= "&#".GetUnicodeChar($str).";";
}else{
$tostr .= $gstr;
}

$i += 2;
}elseif($curbin < bindec("11111000")){
$str = substr($name,$i,4);
$tostr .= "&#".GetUnicodeChar($str).";";

$i += 3;
}elseif($curbin < bindec("11111100")){
$str = substr($name,$i,5);
$tostr .= "&#".GetUnicodeChar($str).";";

$i += 4;
}else{
$str = substr($name,$i,6);
$tostr .= "&#".GetUnicodeChar($str).";";

$i += 5;
}
}

return $tostr;
}
这个程序怎么改成c#程序

function GetUnicodeChar($str)
{
$temp = "";
for($i=0;$i<strlen($str);$i++)
{
$x = decbin(ord(substr($str,$i,1)));
if($i == 0)
{
$s = strlen($str)+1;
$temp .= substr($x,$s,8-$s);
}else{
$temp .= substr($x,2,6);
}
}

return bindec($temp);
}
...全文
135 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzuning 2017-11-29
你那段 php 代码写的糟糕透顶,没有移植的必要
本应写作
function GetGB2312String($name) {
return '&#'. join(';&#', unpack('C*', $name)) . ';';
}
移植过来就是
            var a = Encoding.GetEncoding("gb2312").GetBytes("汉").Aggregate("", (x, y) => x + "&#" + y + ";");
Console.WriteLine(a);
  • 打赏
  • 举报
回复
exception92 2017-11-29
自己去学一下C#中如何声明方法以及if else 的语法可能解决问题会快点。
  • 打赏
  • 举报
回复
xiejing1995 2017-11-29
中间那段文字 应该在最顶端。
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-29 04:06
社区公告

让您成为最强悍的C#开发者