gpt4 book ai didi

ios - 如何在 Objective-C 中将 long long 转换为 8 字节数组

转载 作者:行者123 更新时间:2023-12-01 19:10:30 26 4
gpt4 key购买 nike

在我的应用程序中,我必须将 long long 数转换为 8 字节数组。然后我必须将 8 字节数组转换为十六进制字符串。你能帮我解决这个问题吗?我很震惊。

最佳答案

进行整数/字节数组转换的一种方法是使用 union :

union {
long long l;
uint8_t b[sizeof(long long)];
} u;

u.l = mylonglong;

然后 u.b[] 包含可以单独访问的字节。

编辑 :请注意@NikolaiRuhe 指出的这种使用 union 可能导致未定义的行为,因此最好使用 memcpy() 代替:
uint8_t b[sizeof(long long)];
memcpy(b, &mylonglong, sizeof(b));

如果您希望 long long 的十六进制字符串以 native 字节序排列,则:
void hexChar(uint8_t b, char *out)
{
static const char *chars = "0123456789abcdef";
out[0] = chars[(b >> 4) & 0xf];
out[1] = chars[b & 0xf];
}

// Make sure outbuf is big enough
void hexChars(const uint8_t *buffer, size_t len, char *outbuf)
{
for (size_t i = 0; i < len; i++)
{
hexChar(buffer[i], outbuf);
outbuf += 2;
}
*outbuf = '\0';
}

并调用它:
char hex[32];
hexChars(u.b, sizeof(u.b), hex);

但是,如果您想要 long long 的十六进制值:
char hex[32];
sprintf(hex, "%llx", mylonglong);

关于ios - 如何在 Objective-C 中将 long long 转换为 8 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856964/

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