gpt4 book ai didi

objective-c - Delphi double 型到 Objective C double 型

转载 作者:行者123 更新时间:2023-12-02 20:55:47 27 4
gpt4 key购买 nike

我花了几个小时寻找这个问题的解决方案,但我不明白它是如何工作的。我有一个来自delphi双值的十六进制字符串:0X3FF0000000000000。该值应该是 1.0。它的长度为 8 个字节,第一位是符号,接下来的 11 位是指数,其余是尾数。所以对我来说这个十六进制值等于 0 x 10^(1023)。也许我有什么地方错了,但这并不重要。关键是,我需要这个十六进制值转换为 objective-c 双值。如果我这样做: (double)strtoll(hexString.UTF8String, NULL,16); 我得到:4.607...x 10 ^18。我究竟做错了什么?

最佳答案

似乎尝试以这种方式进行转换最终会调用隐式类型转换(调用 _ultod3_ltod3),从而改变底层数据。事实上,即使尝试这样做似乎也做了同样的事情:

UINT64 temp1 = strtoull(hexString, NULL, 16);
double val = *&temp1;

但是,如果将 uint 指针强制转换为 double*,它似乎会抑制编译器尝试执行转换的愿望。像这样的东西应该有效:

UINT64 temp1 = strtoull(hexString, NULL, 16);
double val = *(double*)&temp1;

至少这适用于 MS C++ 编译器...我想 Objective C 编译器也会配合。

关于objective-c - Delphi double 型到 Objective C double 型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326526/

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