求教大神,java中关于String类的getBytes()方法的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教大神,java中关于String类的getBytes()方法的问题相关的知识,希望对你有一定的参考价值。
System.out.println("我来了".getBytes()[0]),打印出来的怎么会是十进制的-50,字节应该是8位的二进制才对啊
参考技术A 看了下,也测试了一把,“我来了”的GBK十六进制编码是CED2C0B4
C1CB
在Java语言中,对于byte、short等整形数据,它的控制台输出都是10进制的,getBytes()[0]的byte十六进制显示为CE,转换成10进制就是-50,所以控制台打印的是-50。 参考技术B System.out.println调用的是对象的toString方法
查一下API
Byte的toString方法
toString
public
String
toString()
返回表示此
Byte
的值的
String
对象。该值被转换成有符号的十进制表示形式,并作为一个
string
返回,正如将
byte
值作为一个参数指定给
toString(byte)
方法所返回的一样。
覆盖:
类
Object
中的
toString
返回:
以基数
10
表示的此对象值的字符串表示形式。
--------------------------------------------------------------------
所以你直接打印的话就是10进制的字符串了
如果你想直接输出
8位二进制形式字符串的话
还是自己写个方法实现吧
参考下
Integer.toBinaryString
求教一个python 3.x 中关于nonlocal变量的问题
代码如下:
def tester(start):
state=start
def nested(label):
nonlocal state
state+=1
print(label,state)
return nested
f=tester(0)
f('spam')
f('bam')
————————————————
最后两行连续两次调用函数,为什么第一次输出spam 1,第二次输出bam 0?
既然f=tester(0),那么不管f('spam')还是f('bam'),不是都等同于tester(0)(‘spam’)和tester(0)(‘bam’)吗?
理应两次输出都是 spam 0 和 bam 0吧?
求讲解其中机制
spam 1
bam 2
执行过程:
1、f=tester(0),调用tester,用0初始化tester的state,将内部函数nested返回并赋值给f
2、f('spam'),调用f,即直接调用内部函数nested,传入参数spam。由于nonlocal state,实际上操作的是tester的state,上面初始化过state是0,所以加1,结果是spam 1
3、f('bam'),再次调用f,上次执行后state变成1,这次再次加1,变成2,结果bam 2追问
对 就应该是这样,但是这里:
f('spam'),调用f,即直接调用内部函数nested,为什么是直接调用?
前面不是已经让 f=tester(0) 了吗?
按理说f('spam'),就应该跟tester(0) (‘spam’)一样啊
tester(0)的返回值是return nested,所以f收到的只是nested的调用地址。再次调用f,实际是调用了nested。
看一下下面的代码,对理解可能有帮助。
def function():print('Hello')
f = function
g = f
g()本回答被提问者和网友采纳 参考技术B 本体考察『Python的闭包』相关知识点。
所谓闭包,就是『高级的封装』,可以在局部保存内部变量所在环境的信息。
这里,两次调用f,信息累加。故state:0->1->2
以上是关于求教大神,java中关于String类的getBytes()方法的问题的主要内容,如果未能解决你的问题,请参考以下文章
python中关于tkinter的Scrollbar与canvas组合时,只显示滑块,却无法时页面拖动,求教python大神!!??急!