我的意思是,例如,我有以下编号用IEEE-754单精度编码:
"0100 0001 1011 1110 1100 1100 1100 1100" (approximately 23.85 in decimal)
Run Code Online (Sandbox Code Playgroud)
上面的二进制数存储在文字字符串中.
问题是,如何将此字符串转换为IEEE-754双精度表示(有点像下面的那个,但值不一样),没有丢失精度?
"0100 0000 0011 0111 1101 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1010"
Run Code Online (Sandbox Code Playgroud)
是的 相同的数字 以IEEE-754双精度编码.
我尝试使用以下算法首先将第一个字符串转换回十进制数,但它失去了精度.
num in decimal = (sign) * (1 + frac * 2^(-23)) * 2^(exp - 127)
Run Code Online (Sandbox Code Playgroud)
我在Windows平台上使用Qt C++ Framework.
编辑:我必须道歉,也许我没有明确表达的问题.我的意思是我不知道真正的值23.85,我只得到第一个字符串,我想将其转换为双精度表示而不会出现精度损失.
我有以下存储在TXT文件中的IP列表(CIDR格式):<
58.200.0.0/13
202.115.0.0/16
121.48.0.0/15
219.224.128.0/18
...
Run Code Online (Sandbox Code Playgroud)
但我不知道如何确定我的IP是否属于此列表.我在Windows平台上使用Qt C++框架.
以下代码正确编译并获得神秘的输出:
特殊投资功能00000000
(环境:C++ VS2010)
#include <iostream>
#include <vector>
using namespace std;
class Security {
public:
virtual ~Security() {}
};
class Stock : public Security {};
class Investment : public Security {
public:
void special() {
cout << "special Investment function" << endl;
}
};
int main() {
Security* p = new Stock;
dynamic_cast<Investment*>(p)->special();
cout << dynamic_cast<Investment*>(p) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
怎么会这样?取消引用NULL指针并获得"正确"输出而不是崩溃?它是VS2010的特殊"特征"吗?
现在我明白了.我做了一个测试,似乎在"特殊"功能中解除引用"this"会导致程序崩溃.
谢谢你的帮助.
我正在尝试调用fn some_api_function()它&[T]作为参数。为了生成该函数的参数,我尝试调用flat_mapVecs 的 Vec(它本身埋藏在 RefCell 内)。但我无法将 Vec<&T> 转换为 &[T]。出于性能原因,我最好避免Copy使用整个数据集,因为只需要只读借用。Clonesome_api
代码来说明:
use std::cell::RefCell;
pub struct EnvVar {}
pub struct Arena {
services: RefCell<Vec<Service>>,
}
pub struct Service {
env_vars: Vec<EnvVar>,
}
pub fn some_api(env_vars: &[EnvVar]) {}
fn main() {
let arena = Arena {
services: RefCell::new(vec![Service {
env_vars: vec![EnvVar {}],
}]),
};
let env_vars: Vec<&EnvVar> = arena
.services
.borrow()
.iter()
.flat_map(|compose_service| compose_service.env_vars.as_ref())
.collect();
some_api(&env_vars);
}
Run Code Online (Sandbox Code Playgroud)
(游乐场)
错误:
Compiling …Run Code Online (Sandbox Code Playgroud)