c++;(u256)*(h256常量*)(char*[]+;int)强制转换重写到java 我需要重写一些代码,从C++到java,我遇到了这样的C++代码:的麻烦。 using u256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>; using h256 = FixedHash<32>; using bytes = std::vector<byte>; uint32_t offset = ...; bytes m_data = ...; u256 result; result = (u256)*(h256 const*)(m_data.data() + (size_t)offset); 使用u256=boost::multiprecision::number; 使用h256=固定哈希; 使用bytes=std::vector; uint32_t偏移量=。。。; 字节m_数据=。。。; u256结果; 结果=(u256)*(h256常量*)(m_data.data()+(size_t)偏移量);

c++;(u256)*(h256常量*)(char*[]+;int)强制转换重写到java 我需要重写一些代码,从C++到java,我遇到了这样的C++代码:的麻烦。 using u256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>; using h256 = FixedHash<32>; using bytes = std::vector<byte>; uint32_t offset = ...; bytes m_data = ...; u256 result; result = (u256)*(h256 const*)(m_data.data() + (size_t)offset); 使用u256=boost::multiprecision::number; 使用h256=固定哈希; 使用bytes=std::vector; uint32_t偏移量=。。。; 字节m_数据=。。。; u256结果; 结果=(u256)*(h256常量*)(m_data.data()+(size_t)偏移量);,java,c++,casting,Java,C++,Casting,我不知道发生了什么,如何用java代码重写它。 我了解到,首先我们制作并偏移,现在指向m_数据数组的某个元素,然后将其转换为h256类型的数组(我观看了调试,这次转换是这样做的:我们从0获取数据,从m_数据偏移,然后转换为32大小的数组,前导为0) 然后我们得到这个数组的第一个值(我不确定),并将其转换为u256?但(h256 const*)转换后的第一个值为零,但无论如何,结果值不是零。 你有什么想法吗?我不知道u256是什么,这个问题忽略了typedef,但这是C中从内存缓冲区中获取标量类型

我不知道发生了什么,如何用java代码重写它。 我了解到,首先我们制作并偏移,现在指向m_数据数组的某个元素,然后将其转换为h256类型的数组(我观看了调试,这次转换是这样做的:我们从0获取数据,从m_数据偏移,然后转换为32大小的数组,前导为0) 然后我们得到这个数组的第一个值(我不确定),并将其转换为u256?但(h256 const*)转换后的第一个值为零,但无论如何,结果值不是零。
你有什么想法吗?

我不知道u256是什么,这个问题忽略了typedef,但这是C中从内存缓冲区中获取标量类型(int16、int32、int64、double…)的典型方法

基本上是语法的使用:

type t = (type)*(const type *)(buffer + offset)
。。。允许您从从特定索引开始的字节数组中获取特定类型的对象

它不是很安全,但当转换成组装时,它燃烧得很快


注意:指针数学取决于“buffer”的声明,例如,如果它是int8,buffer将从“offset”-n字节获取,如果它是int32,它将从“offset*4”-n字节使用。

什么是
h256
?什么是
字节
?什么是
u256
?忘了注意字节是std::vector
m_data的地址。data()+(size_t)offset
被转换为指向-
h256
的指针,取消引用后,其结果被转换为
u256
。这就是它的作用。请回答你的问题,并把所有的澄清都放在那里。通常,当一个人需要从一种语言翻译到另一种语言时,他不会逐行在两种语言之间转换。人们应该理解代码的作用,并用不同的语言重新编写整体行为。