gpt4 book ai didi

java - Objective C NSData 等效十六进制值(iOS)在 JAVA(Android)中显示负整数值?

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:55 24 4
gpt4 key购买 nike

我正在开发一个在 iOS 和 Android 平台上运行的应用程序。我对 JAVA 完全陌生。
在此应用程序中,我需要将 32 字节数据作为 key 从一个平台发送到另一个平台。
这个 key 用于加密/解密实际数据。

我正在加密这个 32 字节 key 并将其发送到另一方。

当我在 iOS 端加密之前打印此 key (NSData) 时,我得到

<71c76511 dc0dcb9d c8d3c7b3 4e54b8fe 40fb006f 20f21457 5fbec70d f18c7d52>

但是当我打印相同的 key (字节数组)时,解密后,在 Android 端,我得到

 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 编码将两个 key 转换为字符串,并且得到了完全相同的字符串。

我的问题是

这些负值在解密时是否会造成任何损害?
如果是,我是否需要将负值转换为实际的十六进制值?怎么办?
或者这只是一个范围问题,并且(NSData字节数组)完全相同并且不必担心?

提前感谢您的帮助:)

<小时/>

现在我正在仅加密 key 并将其发送到 Android。现在我将致力于实际数据的加密/解密,我不希望这些负值损害此解密。

最佳答案

两者是一样的。字节只是 8 位,这些位可以用许多不同的方式表示。

NSData 将数据显示为十六进制,Java 将它们显示为有符号十进制 -128 到 127。

二进制:01110001
十六进制:71
十进制:113
字符:q(并非所有 8 位值都有可打印字符)

二进制:11000111
十六进制:c7
十进制:-57(有符号字节)这些只是同一字节值的不同表示。

关于java - Objective C NSData 等效十六进制值(iOS)在 JAVA(Android)中显示负整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com