我正在尝试在Objective-C中转换我的Java代码。
Java代码:
pDataResult = "105501005523069400E4100300000000000000000000000000000000"
checksum.update(pDataResult, 0, 12);
long checksumValue = checksum.getValue();
在Objective-C中:
#include <zlib.h>;
NSString *testString = @"105501005523069400E4100300000000000000000000000000000000";
NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];
Byte *testByte = (Byte *)[testData bytes];
uLong crc2 = crc32(0L, Z_NULL, 0);
long long result2 = crc32(crc2, &testByte, 12);
NSLog(@"file crc32 checksum %llu", result2)
在Java中,checksumValue等于4253726258,但在Objective-C中它是752296094。
更新
我试过这个版本
Byte * j=Byte * j= {0x10, 0x55, 0x01 ,0x00, 0x55 ,0x23, 0x06, 0x94,0x00 ,0xe4, 0x10, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
NSData *data2 = [[NSData alloc] initWithBytes:&j length:sizeof(j)] ;
uLong crc = crc32(0L, Z_NULL, 0);
long long result = crc32(crc, &j, 12);
NSLog(@"file crc32 checksum %llu", result);
我现在有了
429518402
答案 0 :(得分:0)
我花了好几天的时间。我刚刚使用了CryptoSwift,结果是正确的。