gpt4 book ai didi

c++ - 打印字节的正确类型转换

转载 作者:行者123 更新时间:2023-11-29 08:17:22 25 4
gpt4 key购买 nike

我正在尝试重新实现 business card ray tracer为了乐趣和利润而使用rust 。据我所知,所有逻辑都已到位,但对于我的一生,我无法弄清楚如何正确地将我的浮点值转换为 ppm 文件格式所期望的 RGB 字节。在原始代码 (C++) 中,它看起来像这样:

printf("%c%c%c",(int)p.x,(int)p.y,(int)p.z);

其中 p 是表示 RGB 值的 3 维浮点 vector 。我在 print! 方面运气不佳,所以经过多次调整后,我编写了等效的表达式:

let mut out = io::stdout();
out.write(&[(p.x as u8),(p.x as u8),(p.x as u8)]);

但是,输出有点偏差(如果你真的想要,我可以发布它,但我只想说正确的输出有很多不可打印的字符,而我的版本是完全可以打印的)。老实说,我不明白这两种语言类型转换的细微差别。有人愿意伸出援手吗?

编辑: full source (注意,我使用 float 作为 vector 属性)

最佳答案

您的代码似乎基本上是正确的(假设您的意思不是 p.x 三次)。这是一个小程序,显示打印包含 u32s 作为字节的 RGB 结构,我验证了它按预期工作(打印 ABC\n)

struct RGB {
x: u32,
y: u32,
z: u32
}

fn main() {
let p = RGB{ x:65, y:66, z:67};
let mut out = std::io::stdout();
out.write([p.x as u8, p.y as u8, p.z as u8, 10]);
}

关于c++ - 打印字节的正确类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121269/

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