精华内容
下载资源
问答
  • 以前我用vb,很快得出了这个想要的结果:dim ascstr as string = asc(textbox.text(0))可是我用c#了,对这个看似简单的,也费尽了脑。string ascstr = (int)textbox1.text[0];能对付abcd.....及+_(),但对“我,你、...

    以前我用vb,很快得出了这个想要的结果:

    dim ascstr as string = asc(textbox.text(0))

    可是我用c#了,对这个看似简单的,也费尽了脑。

    string ascstr = (int)textbox1.text[0];

    能对付abcd.....及+_(),但对“我,你、他”就没办法了,不信你试试:

    比较vb的asc——c#的int值:

    vb(asc)的我:-12590
    c#(int)的我:25105,减(2^16=65536)为:-40431

    哭了......


    我看书,找不到,看帮助。但c#确实麻烦,一大堆不知道的东西,

    测试:输入“我”
    终于得到了想要的:-12590

    什么asciiencoding,结果得到的是63,解释为不能识别的编码,这倒好,以后只要是中文,全是63,
    试了utf8的,unicode,真是不知所云,平常对编码太不熟悉了。

    最后用encoding类,可是还是得不到结果。找啊找......,结果发现中文支持,要支持中文,它的编码名称为gb18030,代码页54936,
    用c#语句:

     encoding ecode = encoding.getencoding("gb18030");

    开始写代码:

    encoding ecode = encoding.getencoding("gb18030");
    byte[] codebytes = ecode.getbytes(chr.tostring());
    messagebox.show( codebytes[0].tostring() );

    结果得到了个百位数的值,又不行。

    忽然想到了中文字都是双字节的,就用一个函数判断一下,该字符是否为双字节

            /// <summary>
            /// 是否为双字节字符。
            /// </summary>
            public static bool istwobyteschar(char chr)
            {
                string str =chr.tostring();
                // 使用中文支持编码
                encoding ecode = encoding.getencoding("gb18030");
                if (ecode.getbytecount(str) == 2)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }

    好了,就来得到这个ascii码:

            /// <summary>
            /// 得到字符的ascii码
            /// </summary>
            public static int ascii(char chr)
            {
                encoding ecode = encoding.getencoding("gb18030");
                byte[] codebytes = ecode.getbytes(chr.tostring());
                if ( istwobyteschar(chr) )
                {
                    // 双字节码为高位乘256,再加低位
                    // 该为无符号码,再减65536
                    return (int)codebytes[0] * 256 + (int)codebytes[1] - 65536;
                }
                else
                {
                    return (int)codebytes[0];
                }
            }
     测试:输入“我”
    终于得到了想要的:-12590


    我不知在做什么,为了这个简单的功能,就好象到黄山去旅游,结果坐船先到美洲,再到欧洲,再到三峡,再到黄山。
    就因为,我找不到直接去黄山的专车,如果谁知道了,来告诉一下。

    展开全文
  • /// <summary> /// 传入单个字符,得到字符的ASCII /// </summary> /// <param name="chr">汤</param> /// <returns>-13120</returns>...
            /// <summary>
            /// 传入单个字符,得到字符的ASCII码
            /// </summary>
            /// <param name="chr">汤</param>
            /// <returns>-13120</returns>
            public static int ASCII(string chr)
            {
                Encoding ecode = Encoding.GetEncoding("GB18030");
                Byte[] codeBytes = ecode.GetBytes(chr);
                if (IsTwoBytesChar(chr))
                {
                    // 双字节码为高位乘256,再加低位
                    // 该为无符号码,再减65536
                    return (int)codeBytes[0] * 256 + (int)codeBytes[1] - 65536;
                }
                else
                {
                    return (int)codeBytes[0];
                }
            }
            /// <summary>
            /// 传入单个字符的ASCII码,得到ASCII码对应的字符(含双字节)
            /// </summary>
            /// <param name="asc">-13120</param>
            /// <returns>汤</returns>
            public static string Character(int asc)
            {
                //asc = asc + 65536;
                Encoding asciiEncoding = Encoding.GetEncoding("GB18030");
                Byte[] chrByte = BitConverter.GetBytes((short)asc);
                string strCharacter = string.Empty;
                if (asc < 0 || asc > 255)
                {
                    Byte[] chrByteStr = new byte[2];
                    chrByteStr[0] = chrByte[1];
                    chrByteStr[1] = chrByte[0];
                    strCharacter = asciiEncoding.GetString(chrByteStr);
                }
                else
                {
                    Byte[] chrByteStr = new byte[1];
                    chrByteStr[0] = chrByte[0];
                    strCharacter = asciiEncoding.GetString(chrByteStr);
                }
                return (strCharacter);
            }
    

      下面对应单元测试

            [TestMethod]
            public void CharacterTest()
            {
                Assert.AreEqual(CommonFuntion.Character(-13120), "汤");
                Assert.AreEqual(CommonFuntion.Character(-10544), "中");
            }
            [TestMethod]
            public void ASCIITest()
            {
                Assert.AreEqual(CommonFuntion.ASCII("中"), -10544);
                Assert.AreEqual(CommonFuntion.ASCII("汤"), -13120);
            }
            [TestMethod]
            public void ASCIIAndCharTest()
            {
                Assert.AreEqual("中", CommonFuntion.Character(CommonFuntion.ASCII("中")));
                Assert.AreEqual("汤", CommonFuntion.Character(CommonFuntion.ASCII("汤")));
                Assert.AreEqual("A", CommonFuntion.Character(CommonFuntion.ASCII("A")));
                Assert.AreEqual("¥", CommonFuntion.Character(CommonFuntion.ASCII("¥")));
                Assert.AreEqual(-13120, CommonFuntion.ASCII(CommonFuntion.Character(-13120)));
                Assert.AreEqual(-10544, CommonFuntion.ASCII(CommonFuntion.Character(-10544)));
            }
    

      

    转载于:https://www.cnblogs.com/xewnwsl2001/archive/2013/01/30/2882468.html

    展开全文
  • 在"机内码"的百科一文 http://baike.baidu.com/link?url=zwf0xM7Jb6f_HUsTcsly-HgJJuXbMMYv0o0BPioQx0igQ1B4uCc7ia49nai2WOwpEdltctP2a90wGtixpMD70a 有一段话如下:由上面我们知道,“保”字的国标为3123H,前...
    在"机内码"的百科一文中

    http://baike.baidu.com/link?url=zwf0xM7Jb6f_HUsTcsly-HgJJuXbMMYv0o0BPioQx0igQ1B4uCc7ia49nai2WOwpEdltctP2a90wGtixpMD70a

    有一段话如下:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,

    高位改1为10110001B和10100011B 即为B1A3H,因此,“保”字的机内码就是B1A3H。

    也就是说汉字"保"的2进制为 1011000110100011 (采用GB2312编码方式),通过我的计算,

    这个2进制”1011000110100011“若转为无符号的10进制则为45475,若转为有符号的10进制则为-12707,但通过

    asc("保")却得到的是-20061,为什么我计算的不是-20061 ?这个-20061是不是"保"的机内码的2进制对应的10进制?

    ----------------------------------------------------

    我知道问题的原因啦。
    负整数在计算机中是以补码形式储存的,补码是怎么样表示的呢,这里还要引入另一个概念——反码,所谓反码就是把负数的原码(负数的原码和和它的绝对值所对应的原码相同,简单的说就是绝对值相同的数原码相同)各个位按位取反,是1就换成0,是0就换成1,如-1的原码是00000001,和1的原码相同,那么-1的反码就是11111110,而补码就是在反码的基础上加1,即-1的补码是11111110+1=11111111,

    所以对于”保“的2进制”1011000110100011“,如果想计算出对应的10进制,要先求出
    "1011000110100011"的原码,由于”1011000110100011“加1得到的补码,那么我们再减1就是得到反码”1011000110100010",”1011000110100010"的原码是"1100111001011101",
    "1100111001011101"的有符号的10进制=-((2的14次方)+(2的11次方)+(2的10次方)+(2的9次方)+(2的6次方)+(2的3次方)+(2的2次方)+(2的0次方))=-20061

    搞定!!!

    展开全文
  • CE都是用的asc("")这种试来处理汉字的。所以如果游戏中用的是unicode,那保证CE是搜索不到信息的。由此可知,要想在CE搜索unicode汉字,只能用数组(array of bytes)的方式来搜索。下面说说如何购...

    CE对unicode汉字的搜索有问题,勾与不勾那个unicode项对汉字来说是一样的。CE都是用的asc("中")这种试来处理汉字的。所以如果游戏中用的是unicode,那保证CE中是搜索不到信息的。

    由此可知,要想在CE中搜索unicode汉字,只能用数组(array of bytes)的方式来搜索。
    下面说说如何购造这个unicode的汉字数组。

    比如说要搜索:武林外传
    1.找出这4个汉字的unicode码,方法多样,自己想办法。
    在此例中是:
    6B66 6797 5916 4F20
    2.
    调整字节顺序,组合成字节数组
    因为在PC中,内存数据是低位在前,高位在后,所以在内存中“武”字的unicode码的存在方式是
    666B,而不是 6B66,由此可知,这4个字的数组为: 66 6B 97 67 16 59 20 4F

    下面是VB转换汉字unicode码的代码
    一、先在VB窗体上放置两个文本框。
    二、然后加入下面代码。

    Private Sub Text1_Change()
    Dim A() As Byte
    Dim
    i As Long, n As Long

    A = Text1.Text
    Text2.Text =
    ""
    n = UBound(A)
    For i = 0 To n
    If A(i) < 16 Then Text2.Text = Text2.Text & "0"
    Text2.Text = Text2.Text & Hex(A(i)) & Chr(32)
    Next
    End Sub

     

    展开全文
  • 任意字符到ASCII互转工具,VB开发源代码,可以把任意字符(数字、字母、汉字)转化成ascii,也可以把ascii还原成最初的字符。转化后的的结果(注:每个字符之间用“/”间隔开)。  使用说明:一共三个大文本框,...
  • VB中的字符串操作函数

    千次阅读 2009-03-27 00:51:00
    ASC(X),Chr(X):转换字符字符 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符 P=Chr(X) 返回字符等于X的字符 [范例]: (1)P=Chr(65) ‘ 输出字符A,因为A的ASCII等于65 (2)P=Asc(“A”) ‘ 输出...
  • VB编写完整源码判断字符串某一字符是否大写,执行下面的代码,这个例子简单哦,不多介绍了,直接看代码吧:  If Asc(Mid(Text1, Val(Text2), 1)) >= 65 And Asc(Mid(Text1, Val(Text2), 1))  Label2.Caption = ...
  • 'ASC码可能达到效果 kk=chr(34) &amp; "aa " &amp; chr(34)  相关文章参考: ※VB中的指针技术 ※一个VB数组指针类 ※VB Environ系统环境变量函数大全 ※变量、常数和数据类型...
  • C#Asc、Chr、CStr、InStr、Mid函数

    千次阅读 2013-04-11 14:36:59
    Asc和Chr是VB的系统函数,Asc用来返回一个字符所对应的字符号,Chr用来返回一个字符所对应的字符。例如: Response.Write(Asc("A")) '返回65 Response.Write(Chr(97)) '返回a C#没有这样的函数,但使用...
  • VB 6验证输入中文字符

    2008-02-27 19:36:00
    Private Sub Text7_Change()Dim gbasciiIf Len(Trim(Text7.Text)) > 0 ThenIf Asc(Text7.Text) gbascii = AscB(StrConv(Text7.Text, vbFromUnicode)) 区位在16区之后的为汉字 If gbascii - 160 > 15 Then 
  • C#字符的 ASCII 和 Unicode

    千次阅读 2007-11-09 15:36:00
    很多人,尤其是从 VB 程序序转过来学 C# 的人,会报怨 C# 里为什么没有提供现成的函数来做这个事情——因为在 VB Asc() 函数和 Chr() 函数用于这类转换。 但是如果你学过 C,你就会清楚,我们只需要将英文字符...
  • 很多人,尤其是从 VB 程序序转过来学 C# 的人,会报怨 C# 里为什么没有提供现成的函数来做这个事情——因为在 VB Asc() 函数和 Chr() 函数用于这类转换。 但是如果你学过 C,你就会清楚,我们只需要将英文字符...
  • 以前我用VB,很快得出了这个想要的结果:Dim ascStr as string = ASC(TextBox.Text(0))可是我用C#了,对这个看似简单的,也费尽了脑。string ascStr = (int)textBox1.Text[0];能对付abcd.....及+_(),但对“我,你、...
  • 以前我用VB,很快得出了这个想要的结果:Dim ascStr as string = ASC(TextBox.Text(0))可是我用C#了,对这个看似简单的,也费尽了脑。string ascStr = (int)textBox1.Text[0];能对付abcd.....及+_(),但对“我,你、...
  • VB中的字符串函数比较多,也比较方便,就不一一介绍了.本文主要对字符串相关的转换函数做一些小结.字符串转换的函数主要有: Str()和Val()用于字符串和数字的相互转换; Chr()和Asc()用于字符串和AscII的相互转换; ...
  • vb 字符串截取 资料 搜集

    千次阅读 2017-01-18 19:58:55
    1. ASC(X),Chr(X):转换字符字符 [格式]:  P=Asc(X) 返回字符串X的第一个字符的字符  P=Chr(X) 返回字符等于X的字符 2. Len(X): 计算字符串X的长度  [格式]:  P=Len(X)  [说明]:  空字符串长度为0...
  • Asc(x$) 返回字符串x$第一个字符的ASCII  Chr$(x) 把x的值转换为相应的ASCII字符  Str$(x) 把x的值转换为一个字符串  Cint(x) 把x的小数部分四舍五入,转化为整数  Ccur(x) 把x的值转换为货币...
  • vb Script参考文档

    2009-07-28 22:13:02
    Asc 函数 返回字符串首字母的 ANSI 字符。 Atn 函数 返回数值的反正切。 CBool 函数 返回已被转换为 Boolean 子类型的变体的表达式。 CByte 函数 返回已被转换为字节子类型的变体的表达式。 CCur 函数 返回已...
  • Asc(x) 返回字符串第一个字符的ASCII Chr(x) 把值转换为相应的ASCII字符 Chr(65)=A Str(x) 把值转换为一个字符串 Cint(x) 把小数部分四舍五入转换为整数 Cint(-12.6)=-13 CInt(-12.3)=-12 Cint(12.6)=13 Cint...
  • VB数据类型转换函数

    2008-02-28 09:56:00
    VB数据类型转换函数 Str (x) 将数值数据x转换成字符串 Val(x) 将字符串x的数字转换成数值 Chr(x) 返回以x为ASCII的字符 Asc(x) 给出字符x的ASCII码值,十进制数 Cint(x) 将数值型数据x的小数部分四舍五入取整 ...
  • ascii与字符的转换

    2011-07-07 14:11:36
    在HTML插入下面的代码 function vbChr(c) vbChr = chr(c) end function function vbAsc(n) vbAsc = asc(n) end function var ascVa
  • 由于中文是双字节字符,也就是说一个汉字占两个ASC码的位置,而VB显然是为英语国家设计的用Len函数无法返回汉字字节,也就是说一个汉字和和一个ASC字符在Len函数得到的值是一样的,这就需要特殊处理。用Asc()...
  • 1、控制文本框输入的内容 例如我们只要求在文本框输入数字,而不允许出现其它字符,则我们使用KEYPRESS事件并检查KeyAscii参数即可,KeyAscii参数用来保存键盘所用的ANSI(不是ASCII),下面是一个例子: ...
  • 起先 我有一个js版的转换版本 里面要用到一个vb的系统函数Asc() .为什么 要用到这个函数呢!我查了好多资料 这个函数能够准确地返回字符。js没有该功能的函数,用户想要使用必须自己编写代码,在c#可以用char 和...
  • <br />Str(x) '将数值数据x转换成字符串 Val(x) '将字符串x的数字转换成数值 Chr(x) '返回以x为ASCII的字符 Asc(x) '给出字符x的ASCII码值,十进制数 Cint(x) '将数值型数据x的小数...
  • VB 数据类型转换函数集

    千次阅读 2008-04-22 16:03:00
    Str(x) 将数值数据x转换成字符串Val(x) 将字符串x的数字转换成数值Chr(x) 返回以x为ASCII的字符Asc(x) 给出字符x的ASCII码值,十进制数Cint(x) 将数值型数据x的小数部分四舍五入取整Int(x) 取小于等于x的...
  • 1.Asc(x),Chr(x):转换字符,字符 2。Filter:搜寻字符串数组的特定字符串 格式:v=filter(x,s[,include[,compare]]) 实例: Dim x()={"kjwang","wangkj","peter"} Dim v v=filter(x,"kj") '结果v(0)=...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

vb中asc码