gpt4 book ai didi

java - 在 ObjC 中检索 String 的字节会返回与 Java 不同的结果

转载 作者:行者123 更新时间:2023-11-29 00:58:23 24 4
gpt4 key购买 nike

我有一个字符串,我正在尝试将其转换为字节,以便在 ObjC 和 Java 中创建 md5 哈希值。由于某种原因,两种语言之间的字节不同。

Java

System.out.println(Arrays.toString(
("78b4a02fa139a2944f17b4edc22fb175:8907f3c4861140ad84e20c8e987eeae6").getBytes()));

输出:

[55, 56, 98, 52, 97, 48, 50, 102, 97, 49, 51, 57, 97, 50, 57, 52, 52, 102, 49, 55, 98, 52, 101, 100, 99, 50, 50, 102, 98, 49, 55, 53, 58, 56, 57, 48, 55, 102, 51, 99, 52, 56, 54, 49, 49, 52, 48, 97, 100, 56, 52, 101, 50, 48, 99, 56, 101, 57, 56, 55, 101, 101, 97, 101, 54]

对象

NSString *str = @"78b4a02fa139a2944f17b4edc22fb175:8907f3c4861140ad84e20c8e987eeae6";
NSData *bytes = [str dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:NO];
NSLog(@"%@", [bytes description]);

输出:

<37386234 61303266 61313339 61323934 34663137 62346564 63323266 62313735 3a383930 37663363 34383631 31343061 64383465 32306338 65393837 65656165 36>

我尝试使用不同的字符集,但没有成功,并且无法想到字节不同的任何其他原因。有任何想法吗?我确实注意到所有字节值都相差 18 倍,但我不确定是什么原因造成的。

最佳答案

实际上,Java 是以十进制方式逐字节打印的。 Obj C 以十六进制逐个整数打印。

引用此 chart :

Dec Hex
55 37
56 38
98 62
...

您只需要找到一种在 Obj C 中逐字节输出的方法即可。

我不了解 Obj C,但如果 NSLog 函数的工作方式与 C 中的 printf() 类似,我会从它开始。

关于java - 在 ObjC 中检索 String 的字节会返回与 Java 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37338929/

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