下面是python代码版本:
def decode(s):
for i in range(len(s)):
print compat_ord(s[i])
def compat_ord(c):
if type(c) is int:
return c
else:
return ord(c)
decode(base64.b64decode('NwXYSw8YI7nb2PnE8eJxVoLzuBQ81wjOXh4='.encode('ascii')))输出
55 5 216 75 15 24 35 185 219 249 196 241 226 86 130 243 184 20 215 8 206 94 30
我的Java版本
byte[] s = Base64.getDecoder().decode("NwXYSw8YI7nb2PnE8eJxVoLzuBQ81wjOXh4=".getBytes("ascii"));
for(int i= 0;i<s.length;i++){
System.out.println(s[i]);
}外置
55 .5 -40 75 15 24 35 -71 37 -40 -7 -60 -30 113 86 -126 -13 -72 20 60 -41 8 -50 94 30
我的问题
为什么有些价值观是相同的,而有些则不是
发布于 2017-01-24 15:35:05
Java中的byte是8位签名的。所以你会得到负值。
变化
System.out.println(s[i]);至
System.out.println(s[i]&0xff);得到相同的值。
更新:我刚刚看到Java8引入了Byte.toUnsignedInt()。这可能更容易读懂:
System.out.println(Byte.toUnsignedInt(s[i]));https://stackoverflow.com/questions/41832077
复制相似问题