Hashids:swift和C版本之间的兼容性

时间:2017-07-15 12:34:06

标签: java c swift hashids

我正在使用Hashids swift版本对数组进行编码,而我使用的是C版本,使用相同的SALT对其进行解码。复位后解码仅成功一次,之后每次解码失败。 C版本是1.1.3,Swift版本是1.1.0。虽然如果在Android上使用Java版本的Hashids完成编码,我不会遇到此问题。 Java版本是1.0.1。

C代码是:

size_t decode_hashids(const char *salt, char *hash, unsigned long long num_array[])
{
  hashids_t *hashids;
  hashids = hashids_init3(salt, MIN_HASH_STRLEN,HASHIDS_DEFAULT_ALPHABET);
  size_t bytes_decoded = hashids_decode(hashids, hash, num_array);   
  hashids_free(hashids);
  return bytes_decoded;
}

Swift代码是:

let hashIds = Hashids(salt: salt , minHashLength: 6)
let id = hashIds.encode(number, number)

对于所有版本,我在相应的Hashids GitHub存储库中使用最新更新版本。

编辑:这是github repo https://github.com/tzvetkoff/hashids.c,此链接在hashids网站上提供:http://hashids.org/c/

对hashids_init3或任何其他函数的调用不会修改其值。事实上,salt是两种语言中的字符串。所以在C中它的const char []类型和Swift中的String类型。 salt的值在两种语言中都被保存为硬编码值,对于运行C代码的设备(即基于arm的处理器)而言,不会改变。

0 个答案:

没有答案