gpt4 book ai didi

java - 如何在 Java 中遵循 C++ 位存储?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:38 26 4
gpt4 key购买 nike

如果我在 C++ 中有:

char abc[4];

abc[0] = 0xC0; //11000000 in binary

abc[1] = 0x20; //00100000 in binary

abc[2] = 0x44; //01000100 in binary

abc[3] = 0x20; //00100000 in binary

那么这将如何存储在内存中-

11000000 00100000 01000100 00100000 or the reverse way ??
-----------------------------------
0th 1st 2nd 3rd

在 Java 中,我正在创建 Bitset abc = new Bitset(32);

所以我需要在这个(相同的顺序)中存储相同的值。这可能是稍后根据位位置进行修改,因此必须完全相同。

所以 abc[32] = 0xC0204420 可以吗?如果我想存储C++ 中的值如何处理?如果我错了,那么如何在 Java 中执行此操作...

最佳答案

字节序不是问题。如果你使用 char[4]最低的地址 0 在前,最高的 3 在后,所以你进入内存

char[0] char[1] char[2] char[3]

无论你做什么。

如果你做 int x = *(reinterpret_cast<int*>(abc)) , 然后 你会得到不同的结果,这取决于字节顺序,因为 (4byte-) int有时读作 0123 , 有时 3210 -- 我什至认为 2301大约在 60 年代。

你不能把0xC0204420 (比 127 更大的数字)进入 [32] abc的位置.如果你想实现一些“快速”(而且危险)的东西,你需要一个依赖于平台的 reinterpret_cast .看看 hton and ntoh .

关于java - 如何在 Java 中遵循 C++ 位存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936251/

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