10->16

博客展示了两段将十六进制字符串转换为十进制整数的C++代码。一段为网友所写,另一段是博主自己编写,博主对比后表示差异较大。代码通过不同逻辑实现十六进制到十进制的转换,涉及字符判断和数学运算。

#include<iostream>
#include<cmath>
using namespace std;
int atoi10(char* s)
{
    int r = 0;
    while(*s)
    {
        if(*s >= '0' && *s <= '9')
        {
            r = r*16 + *s - '0';
        }
        else if(*s >= 'a' && *s <= 'f')
        {
            r = r*16 + *s - 'a' + 10;
        }
        else if(*s >= 'A' && *s <= 'F')
        {
            r = r*16 + *s - 'A' + 10;
        }
        else
            return -1;
        s++;
    }
    return r;
}
int main()
{
    char *test="100";
    cout<<atoi10(test)<<endl;
    system("PAUSE");
    return 0;
}

一位网友的.

================================================================================= 
#include<iostream>
#include<cmath>
using namespace std;
int atoi10(char *s)
{
    int r=0,i=0,sigal;
    char *p=s;
    while(*p)p++;p--;
    while(s<=p)
    {
        if(*p>='0'&&*p<='9')sigal=48;
        else if(*p>='a'&&*p<='f')sigal=87;
        else if(*p>='A'&&*p<='F')sigal=55;
        else return -1;
        r+=(*p-sigal)*pow(16.0,i);
        i++,p--;
    }
    return r;
}
int main()
{
    char *test="100";
    cout<<atoi10(test)<<endl;
    system("PAUSE");
    return 0;
}

自己写的.郁闷.差很多呀.

你提供的输出是 FCI 算法运行后得到的 **PAG(Partial Ancestral Graph)图**,它表示变量之间可能的因果关系。我们来逐条解读这些边的含义,并说明如何可视化这张图。 --- ### 🧠 一、PAG 图中边类型的含义 | 边类型 | 含义 | |--------|------| | `A --> B` | A 是 B 的直接原因 | | `A <-> B` | 存在一个隐藏的混杂因子同时影响 A 和 B | | `A o-> B` | A 可能是 B 的原因,但不能确定是否是直接原因 | | `A o-o B` | 不确定方向性,可能是双向因果或存在隐藏混杂 | --- ### 📊 二、你输出的结果解析 ```text X5 --> X6 X9 --> X5 X15 --> X9 Edges in PAG: X2 <-> X10 X2 <-> X16 X3 o-> X15 X5 --> X6 X9 --> X5 X7 o-o X8 X7 --> X16 X9 <-> X10 X15 --> X9 X10 <-> X12 X11 o-o X14 X12 <-> X16 X14 --> X13 X13 <-> X15 X14 --> X16 ``` #### 🔍 关键路径举例: - `X5 --> X6`:X5 对 X6 有直接因果作用。 - `X9 --> X5`:X9 是 X5 的原因。 - `X15 --> X9`:X15 影响 X9。 - 所以从 `X15 → X9 → X5 → X6` 构成一条因果链。 - `X2 <-> X10`:X2 和 X10 之间存在隐藏混杂因子。 - `X3 o-> X15`:X3 可能是 X15 的间接原因。 - `X7 o-o X8`:X7 与 X8 的因果方向不确定,可能是互为因果或有隐藏因素。 --- ### 🖼️ 三、绘制 PAG 图的方法 你需要使用 `causallearn.utils.GraphUtils.to_pydot()` 将图结构转换为图像格式(如 PNG),并用 matplotlib 显示。 #### ✅ 示例代码: ```python from causallearn.utils.GraphUtils import GraphUtils import matplotlib.pyplot as plt # 将图结构转为 pydot 并保存为 PNG pyd = GraphUtils.to_pydot(G) pyd.write_png("fci_pag_graph.png") # 显示图像 plt.figure(figsize=(12, 10)) img = plt.imread("fci_pag_graph.png") plt.imshow(img) plt.axis('off') plt.title("PAG Graph from FCI Algorithm") plt.show() ``` --- ### 📌 四、图表美化建议 - 如果节点太多导致图表混乱,可以: - 使用 `depth` 参数控制搜索深度; - 使用 `G.remove_node(i)` 删除不重要的节点; - 或使用第三方工具(如 Cytoscape)导入 `.dot` 文件进行高级布局和交互式查看。 #### 保存 `.dot` 文件供外部工具使用: ```python with open("fci_pag.dot", "w") as f: f.write(G.ToString()) ``` --- ### ✅ 总结 你现在拥有了一个基于观测数据学习出的因果图(PAG),可以用于以下用途: - 探索变量之间的潜在因果机制; - 指导后续干预实验设计; - 结合业务知识解释模型行为(如哪些特征驱动了关键指标); --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值