目标NSC数据等效十六进制值(iOS)在JAVA(Android)中显示负整数值?
我正在开发一款同时在iOS和Android平台上运行的应用程序。我对JAVA完全陌生。目标NSC数据等效十六进制值(iOS)在JAVA(Android)中显示负整数值?,java,android,ios,objective-c,encryption,Java,Android,Ios,Objective C,Encryption,我正在开发一款同时在iOS和Android平台上运行的应用程序。我对JAVA完全陌生。 在此应用程序中,我需要将32字节的数据作为密钥从一个平台发送到另一个平台。 该密钥用于加密/解密实际数据 我正在加密这个32字节的密钥并将其发送到另一端 当我在iOS端加密之前打印此密钥(NSData)时,我得到 <71c76511 dc0dcb9d c8d3c7b3 4e54b8fe 40fb006f 20f21457 5fbec70d f18c7d52> 0 = 113 1 = -5
在此应用程序中,我需要将32字节的数据作为密钥从一个平台发送到另一个平台。
该密钥用于加密/解密实际数据 我正在加密这个32字节的密钥并将其发送到另一端 当我在iOS端加密之前打印此密钥(NSData)时,我得到
<71c76511 dc0dcb9d c8d3c7b3 4e54b8fe 40fb006f 20f21457 5fbec70d f18c7d52>
0 = 113
1 = -57
2 = 101
3 = 17
4 = -360
5 = 13
6 = -53
7 = -99
8 = -56
9 = -45
10 = -57
11 = -77
12 = 78
13 = 84
14 = -72
15 = -2
16 = 64
17 = -5
18 = 0
19 = 111
20 = 32
21 = -14
22 = 20
23 = 87
24 = 95
25 = -66
26 = -57
27 = 13
28 = -15
29 = -116
30 = 125
31 = 82
我可以理解JAVA的字节范围是-128到127,这就是为什么它要打印负值。我还尝试在两端使用Base64编码将两个键转换为字符串,得到了完全相同的字符串 我的问题是 解密时这些负值是否会造成伤害?
如果是,是否需要将负值转换为实际的十六进制值?怎么做?
或者这只是一个范围问题,两者(NSData和字节数组)完全相同,不必担心 提前感谢您的帮助:)
现在我只加密密钥并将其发送到Android。
现在我将致力于实际数据的加密/解密,我不希望这些负值损害这种解密 两者是相同的。字节只有8位,这些位可以用许多不同的方式表示 NSData将数据显示为十六进制,Java将其显示为有符号十进制-128到127 二进制:0111001
十六进制:71
小数点:113
字符:q(并非所有8位值都具有可打印字符) 二进制:11000111
十六进制:c7
十进制:-57(有符号字节)
这些只是相同字节值的不同表示。这两种表示方式是相同的。字节只有8位,这些位可以用许多不同的方式表示 NSData将数据显示为十六进制,Java将其显示为有符号十进制-128到127 二进制:0111001
十六进制:71
小数点:113
字符:q(并非所有8位值都具有可打印字符) 二进制:11000111
十六进制:c7
十进制:-57(有符号字节)
这些只是相同字节值的不同表示。zaph:谢谢你写下答案。我已经用这个密钥对实际数据进行了解密,得到了正确的结果。这意味着两个演示都是一样的。再次感谢你!扎夫:谢谢你写下答案。我已经用这个密钥对实际数据进行了解密,得到了正确的结果。这意味着两个演示都是一样的。再次感谢你!