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 五 216 75 15 24 35 185 219 216 249 196 241 226 113 86 130 243 184 20 60 215 8 206 94 30
byte[] s = Base64.getDecoder().decode("NwXYSw8YI7nb2PnE8eJxVoLzuBQ81wjOXh4=".getBytes("ascii"));
for(int i= 0;i<s.length;i++){
System.out.println(s[i]);
}
55 五 -40 75 15 24 35 -71 -37 -40 -7 -60 -15 -30 113 86 -126 -13 -72 20 60 -41 8 -50 94 30
为什么有些值相同而有些值不是
答案 0 :(得分:5)
byte
是8位签名的。所以你会得到负值。
更改
System.out.println(s[i]);
到
System.out.println(s[i]&0xff);
获得相同的值。
更新:我刚看到Java 8引入了Byte.toUnsignedInt()。这可能更具可读性:
System.out.println(Byte.toUnsignedInt(s[i]));