Delphi Double转换为Objective C double

蹒跚

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

J ...

似乎尝试以这种方式进行转换最终会导致对隐式类型转换(_ultod3_ltod3)的调用,该隐式类型转换会更改基础数据。实际上,即使尝试执行此操作似乎也会执行相同的操作:

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

但是,如果将uint指针double*强制转换为a,则会抑制编译器尝试执行转换的愿望。这样的事情应该工作:

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

至少这可以与MS C ++编译器一起使用...我想目标C编译器也可以配合使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Double从Delphi / Pascal转换为Java

来自分类Dev

在C#中将double []转换为double *

来自分类Dev

在C#.net中将object {double [,]}转换为double [,]或int [,]

来自分类Dev

C:将argv [1]转换为double

来自分类Dev

在C ++中将double *转换为int *

来自分类Dev

C ++将int转换为double

来自分类Dev

将double [,]转换为IntPtr C#

来自分类Dev

在C中将double转换为char *

来自分类Dev

C ++将int转换为double

来自分类Dev

C:将argv [1]转换为double

来自分类Dev

C ++:将wstring转换为double

来自分类Dev

C#将“ double”转换为“ ushort”

来自分类Dev

在C中将double转换为int

来自分类Dev

在C#上从object []转换为double []

来自分类Dev

将double dq从汇编转换为C

来自分类Dev

C ++无法将参数1的'double'转换为'double *'到'void sort(double *,int)'错误

来自分类Dev

“ [Double?]”不能转换为“ [Double]”

来自分类Dev

在C#中将十进制[] []转换为double [] []

来自分类Dev

如何将Python Decimal实例转换为C ++ double?

来自分类Dev

为什么C#将double转换为int?

来自分类Dev

如何在C#中将double转换为dateTime值?

来自分类Dev

在目标C中将double转换为long long

来自分类Dev

将字符串转换为double或float C#

来自分类Dev

C ++从类型'void *'强制转换为类型'double'

来自分类Dev

C ++便携式将long转换为double

来自分类Dev

C ++-如何正确将double转换为int

来自分类Dev

将double转换为无符号长C ++

来自分类Dev

C ++ 2D向量-将int转换为double

来自分类Dev

在C#中将double转换为字符串