首页 新闻 会员 周边

对2句代码的理解存在疑问

0
悬赏园豆:10 [已解决问题] 解决于 2017-09-22 16:56

嗨 ,朋友们:

 

        上午好啊

        有2句代码的意思不太理解。

      1) string strCharacter = asciiEncoding.GetString(byteArray);

            这句是不是说把ASCIIENcoding的类里获得字符串(方法:变成byte数组)类型?

           还是其他什么意思?总感觉这么翻译很别扭。

      2) return (strCharacter);

            返回字符串?返回的字符串strCharacter给谁?这返回不就是谁输出一个结果吗?

           意思是strCharacter 输出一个字符串?

        可以这样理解吗?还是应该怎么理解?

 

绿绿山水的主页 绿绿山水 | 菜鸟二级 | 园豆:248
提问于:2017-09-22 11:37
< >
分享
最佳答案
2

GetString()是ASCIIEncoding类中的一个方法,这个方法的作用是把一个byte数组转换成一个字符串,并返回这个字符串。byte数组中的元素是某些字符对应的ASCII码值,这个方法的目的就是把这些ASCII码值转换成对应的字符。

比如byte数组的值为{65,66,67,68},那么通过这个方法就可以返回ABCD。

 

至于你说的return,也就是说你名称为Chr的方法需要一个string类型的返回值。

 

就好比:我问你数字的1用汉字来表示是什么,你告诉我是“一”。那么1就是参数,数字就是参数类型,你思考的过程就是GetString方法的执行过程,你告诉我“一”是你思考之后的结果。这就是带返回值的方法。

收获园豆:10
龙行天涯 | 小虾三级 |园豆:1794 | 2017-09-22 14:35

 (*@ο@*) 哇~,我看得如痴如醉,说的 太好了,真心喜欢你的回答。

那么GetString();  和GetString(byteArray);  这两者有何区别?可否解释下。

 我每次看到();我就头痛的要命,因为不知道小括号里加不加东西有何区别?

绿绿山水 | 园豆:248 (菜鸟二级) | 2017-09-22 15:02

@九阳之光: GetString是ASCIIEncoding类里的方法,是方法的话在调用的时候都会在方法名后面加上(),所以在调用对象的时候只要是这个对象名后面跟了()就说明它是个方法。

 

对于ASCIIEncoding类中的方法GetString,这是系统已经定义好了的,规定你必须传入至少一个参数,否则直接给你报错。

至于()里有没有byteArray,是根据方法本身的功能需求来设定的。比如,我现在要写一个方法,这个方法的目的是获取一个字符串形式的当前时间,那么当前时间我们可以通过DateTime.Now获取,所以就不需要从外部传入参数,因此这样写:

public string GetDate(){

return DateTime.Now.ToString();

}

那么根据我的要求,我设置了GetDete()方法里不需要传入任何参数,所以调用的时候()里就没有任何东西。

 

我再写一个方法,名字叫GetSum,这个方法的目的是:给两个数字,然后返回它们的和。这时就需要从外面给两个具体的数字,比如2,3,或者5,6。那么这两个数如何才能传到GetSum方法里呢,这就用到了参数。

我就可以这样定义:

public int GetSum(int a, int b)
{
return a + b;
}

GetSum方法的括号里我明确规定了有两个参数,int a,int b,那么在调用的时候,就必须给两个参数,这是事先约定好了的。

所以在调用的时候就应该是:

int a=5;
int b=6;
int sum = GetSum(a, b);

 

举个例子,上体育课和上语文课,老师规定了体育课你可以空手去就行了,但是上语文课必须带课本,带笔记本,如果不带,就不让你进教室,要赶你出来,你就没法上课了。上体育课和上语文课就相当是无参数的方法和有参数的方法。有参数的方法,它的参数就是你的课本和笔记本,参数就带在()里,如:上语文课(课本,笔记本),无参数的方法,就不需要带任何参数,所以()里是空的,写法就是:上体育课()。

龙行天涯 | 园豆:1794 (小虾三级) | 2017-09-22 16:15

@龙行天涯: 天哪,龙行天涯,我爱死你了。你真伟大,你是我滴偶像。

    最后,谢谢你。

绿绿山水 | 园豆:248 (菜鸟二级) | 2017-09-22 16:55

@九阳之光: 你真会说话:)

龙行天涯 | 园豆:1794 (小虾三级) | 2017-09-22 17:03
其他回答(3)
1

读入一个ascii编码的字节数据,返回对应的string.

空明流光 | 园豆:106 (初学一级) | 2017-09-22 11:47

(byteArray);   是一个什么方法?这个方法是干什么的?它起到什么作用?

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2017-09-22 13:45

@九阳之光: 你太菜了,我都无力解释了。

支持(0) 反对(1) 空明流光 | 园豆:106 (初学一级) | 2017-09-22 15:06

@沧海一杰: 你是高手,我相信你有办法解释的。哪有高手解释不了的,是吧?

  你看,我这么相信你,快解释下。

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2017-09-22 15:40

@绿绿山水: 好吧,其实本质就是字符串在内存中都是以字节形式存储的,在网络传输中很多也是以字节形式传输的,比如发短信,它就是以字节方式发出去,对方收到字节后,根据你的编码,将对应的字节解码成字符串。字符串编码就是将字符串转换成字节数组,解码就是将字节数组转换成字符串。目前流行的字符串编码方式有Unicode和ASCII,前者是用两个字节表示一个字符(其中又分多种编码方式UTF-8常见),后者是用一个字节表示一个字符。你选中的代码段的意思就是以ASCII方式解码字节数组,从而拿到字符串。如果解码器选择为UTF-8,那么解码出来就不是正确的字符串,很可能是乱码或报错。

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2017-09-27 15:27
1

 string strCharacter = asciiEncoding.GetString(byteArray);

GetString 入参是一个byte数组,返回是一个字符串,这个方法就是将byte数组转为字符串,

那怎么转呢?asciiEncoding 有相关的规定,大概就一个字段对应一个字符,然后返回合并后的字符串。

 

 return (strCharacter);

这个和 return “a” ,有什么区别呢,不就是返回一个引用数值。

放逐人 | 园豆:694 (小虾三级) | 2017-09-22 12:01

是不是可以这么理解,GetString:  我要得到一个字符串。那么怎么得到呢?就是通过(byteArray);这个方法得到,方法是什么呢?就是把byte[]数组转化为字符串。

我说的对不对?

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2017-09-22 13:48
-1

Encoding.ASCII.GetString()这样写不就行了么,只要编译能通过,调试一下就知道了

数据酷软件 | 园豆:130 (初学一级) | 2017-09-22 13:48

 你这样写,方法是空的,如何得到不知道呢。系统怎么会知道你怎么得到字符串?

支持(0) 反对(0) 绿绿山水 | 园豆:248 (菜鸟二级) | 2017-09-22 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册