为什么 char 数组到 int 在 C++ 中工作相反?

发布于 2025-01-11 06:16:44 字数 566 浏览 0 评论 0原文

#include <iostream>

int main() {
    unsigned char bytes[] = {1, 2, 3, 4};
    unsigned int a;
    std::memcpy(&a, bytes, 4);
    std::cout << a << std::endl; // result: 67305985
    return 0;
}

我尝试将 char 数组转换为 int,但发现了一些奇怪的东西。其中“a”是67305985,可以在在线转换器(网页)中将其转换为0000010000000011000000100000000100000100, 00000011, 00000010, 00000001 等于 4, 3, 2, 1 的二进制。为什么会发生这些事情以及计算机在这个时期是如何工作的?

* PS。我没有尝试将 char 数组 {1, 2, 3, 4} 转换为 int 1234。只是出于好奇才这么做的。

#include <iostream>

int main() {
    unsigned char bytes[] = {1, 2, 3, 4};
    unsigned int a;
    std::memcpy(&a, bytes, 4);
    std::cout << a << std::endl; // result: 67305985
    return 0;
}

I tried to convert char array to int, and I found something weird. The "a" is 67305985, and it can be converted to 00000100000000110000001000000001 in online converter(webpage). And 00000100, 00000011, 00000010, 00000001 is eqaul to 4, 3, 2, 1's binary. Why these thing happen and how computer works in these time?

*ps. I wasn't try to convert char array {1, 2, 3, 4} to int 1234. Just did that for curiosity.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

电影里的梦 2025-01-18 06:16:44

抱歉最后一个答案,您的用法没有错误,但该程序适用于字节顺序,即最小空间中的最大值和最大空间中的最小值。一般来说,memcpy 用于将数据从一个类型复制到同一类型。你的代码很有趣,因为我还没有见过很多这样的例子,保持好奇心!

Sorry for the last answer, your usage is not wrong but the program works on Endianness, largest value in smallest space and smallest value in largest space. Generally memcpy is used for copying data from a type to the same type. Your code is interesting since I have not seen many examples like it, keep up the curiosity!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文