如何在C#中实现VB.NET中的ASC函数的功能?

yeahooh 2004-04-19 08:05:02
很奇怪,在C#中对中文字符转化后的ASCII值与在VB.NET中用ASC函数得到的值不一样,到底是什么原因? 是不是与Encoding有关?
到底该如何在C#中实现与VB.NET中ASC函数同样的功能?

代码如下:
VB.NET中:
Dim aaa As Char = "汤"
Dim bbb As Short = -13120

Dim ccc As Short = Asc(aaa)
Dim ddd As Char = Chr(bbb)

System.Console.WriteLine(ccc)
System.Console.WriteLine(ddd)

输出结果:
-13120



C#中:
char aaa = '汤';
short bbb = 27748;

short ccc = (short)aaa;
char ddd = (char)bbb;

System.Console.WriteLine(ccc);
System.Console.WriteLine(ddd);

输出结果:
27748


其中一个输出为-13120,而另一个却为27748,到底该如何处理呀?
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhgj 2004-04-20
  • 打赏
  • 举报
回复
int ASC(String Data) //获取ASC码
{
byte[] b = System.Text.Encoding.Default.GetBytes(Data);
int p=0;

if(b.Length==1) //如果为英文字符直接返回
return (int)b[0];
for( int i = 0; i < b.Length; i +=2)
{
p = (int)b[ i ];
p = p * 256 + b[ i+1] - 65536;
}
return p;
}
yeahooh 2004-04-19
  • 打赏
  • 举报
回复
但是我不是要得到unicode值,而是要在C#中实现与VB.NET中ASC函数相同的功能,该如何实现呀?
chenyuming2004 2004-04-19
  • 打赏
  • 举报
回复
VB里面的asc函数如果
要测试汉字的话应该是用
ascw("汤")
chenyuming2004 2004-04-19
  • 打赏
  • 举报
回复
VB.net里面的代码返回值有错,
C#里面运算的才是正确的unicode值。
不信你可以这样试:
Console.WriteLine('\u6c64');
输出的就是汤
6c64是27748的十六进制。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧