首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SipHash24键“其类型太大”

SipHash24键“其类型太大”
EN

Stack Overflow用户
提问于 2015-10-18 03:23:21
回答 1查看 122关注 0票数 1

我被告知要使用Siphash键

24 64 6d 71 33 45 30 31 63 2f 6d 69 37 33 9d 19

我正在尝试使用SipHash24_Init从OpenBSD开始。

我有以下全球报告:

代码语言:javascript
复制
const SIPHASH_KEY COMP_SIPHASH_KEY = 0x24646d7133453031632f6d6937339d19;

是这样使用的:

代码语言:javascript
复制
SIPHASH_CTX ctx;
SipHash24_Init(&ctx, &COMP_SIPHASH_KEY);

我会发布更多,但它很复杂,我不认为这是相关的

但是,我在定义/声明上得到了以下编译器错误:

代码语言:javascript
复制
error: integer constant is too large for its type
error: invalid initializer
EN

回答 1

Stack Overflow用户

发布于 2015-10-18 12:40:09

因此,鉴于我最近在C方面的实践有限,我认为你应该做以下几件事:

代码语言:javascript
复制
SIPHASH_CTX ctx;
SIPHASH_KEY key;

key.k0 = bswap_64(0x24646d7133453031);
key.k1 = bswap_64(0x632f6d6937339d19);
SipHash24_Init(&ctx, &key);

因为SIPHASH_KEY似乎被定义为

代码语言:javascript
复制
typedef struct {
    uint64_t k0;
    uint64_t k1;
} SIPHASH_KEY;

我在这里使用一个<byteswap.h>库来反转长值中的字节,因为k0k1应该被编码为小的endian值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33193972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档