我需要把C++代码翻译成Java。我有两个担心的问题。
1)将C++到Java的unsigned int翻译为long。我选择使用long来增加存储容量。
2)使用按位运算符,特别是|和<<。假设我已经将无符号int值转换为long,这对这些运算符会有什么坏影响吗?例如在C++中:
unsigned int a;
unsigned int b;
unsigned int c;
a | (b<<c)
用Java可以做到这一点吗:
long a, b, c;
a | (b<<c)
请让我知道你认为我在做这些事情时可能遇到的任何问题。
谢谢
我有下面的c代码,我想把它移植到Java。
unsigned long long* data=(unsigned long long*)pBuffer; // file data
unsigned long long crypt = 0x0000;
unsigned long long next_crypt;
unsigned int len = size >> 3;
for(unsigned int i=0; i<len;i++) {
next_crypt = crypt+data[i]-0xCAFEBABE;
data[i]
George Marsaglia写了一个非常优秀的随机数生成器,它非常快、简单,并且周期比Mersenne Twister高得多。下面是代码和描述:
我想将CMWC4096代码移植到Java,但它使用了几个无符号的数据类型,所以我不确定如何正确地做到这一点。下面是完整的C代码:
/* choose random initial c<809430660 and */
/* 4096 random 32-bit integers for Q[] */
static unsigned long Q[4096],c=362436;
unsigned long CMWC4096(void)
我有一个简单的C代码,它使用无符号的long long:
#include<stdlib.h>
unsigned long long get_random_id(const char *imeiId)
{
const unsigned long long MULT = 2862933555777941757LL;
const unsigned long long ADDEND = 3037000493LL;
unsigned long long newId, oldId;
oldId = atoll(imeiId);
newId = MULT
我需要用JNA传递一个结构。
我所掌握的文件有以下信息:
int rdGetStatusHardware (struct StatusHardware *stat)
struct StatusHardware{
unsigned char SerialNumber[12];
unsigned long HWVersion;
unsigned long FWVersion;
unsigned long MemorySize;
unsigned short BootVersion;
unsigned short FPGAVersion;
unsigned long
因此,如上所述,我试图在Unsafe的帮助下将int对象复制到堆外内存中。下面是我的主要函数:
public static void main(String[] args) throws Exception {
UnsafeHelper hlpr = new UnsafeHelper();
int original = 100;
long copyaddress = hlpr.shallowCopy(original);
System.out.println("COPIED TO ADDRESS: " + copyaddress);
i
我有以下CRC函数:
unsigned long Checksummer::crc32 (unsigned long crc, char *buf, unsigned long len)
{
unsigned long crc_table[256];
int i, k;
for (i = 0; i < 256; i++) {
unsigned long c = (unsigned long) i;
for (k = 0; k < 8; k++)
c = c & 1 ? 0xedb88320 ^ (c >&g
我有一个SWIG接口文件,它向我的Java应用程序公开了一些C函数(通过JNI),这些C结构用作C函数的输入(通过SWIG/JNI)。SWIG将结构生成为Java类,但我不确定如何设置结构属性,因为setter采用SWIG生成的类型。在将结构作为输入从Java类传递到C函数之前,我需要设置结构属性。example_location_id_t_是我需要传递的类,但Id和Phy_idx的setter采用以下SWIG类型。如何填充SWIGTYPE_p_unsigned_char和SWIGTYPE_p_uint32_t,以便设置SWIGTYPE_p_uint32_t类的Id和Phy_idx属性?
se
我有以下代码:
(defn BitScanReverse [^Long bit-board]
(loop [value bit-board r 0]
(cond
(> value 0x00000000FFFFFFFF) (recur (unsigned-bit-shift-right value 32) (+ r 32))
(> value 0x000000000000FFFF) (recur (unsigned-bit-shift-right value 16) (+ r 16))
(> value 0x00000000000
我在运行程序时调用库本机函数OpenSSPComPortUSB(),使其弹出无法打开端口.\COM208。当我传递PortNumber =7时,它为什么返回PortNumber;下面是PortNumber代码,我的目标是打开端口COM7,以启动与智能hoper的串行通信。
// AccessITLLib.java
public class AccessITLLib
{
public static class SSP_COMMAND extends Structure
{
SSP_FULL_KEY Key;
有一些数据类型在C中存在,但在Java中不可用。我已经列出了其中的一些,并用Java编写了它们的替代品。如果我做得对,或者需要做一些修改,请给我一些建议:
unsigned char -> short
无符号短->整型
unsigned char *x -> short[] x
unsigned short *x -> int[] x
char *x ->字符串
unsigned int -> long
不知道我在这里做了什么(对C非常陌生,以前做过一些Python、Arduino和Java )。
int main(void){
unsigned long int sum = 0;
unsigned int count = 0;
for(unsigned long int i = 1; i <= 100; i++)
if(i%3 != 0 && i%5 != 0)
printf("cond%d\n", i);
count++;
sum += i;
我正在创建一些类来表示Java的无符号数字,并从Number派生它们。我的目标之一是让它们装箱和拆箱原始值,但我不能让它工作,也找不到任何关于如何在其他地方实现这一点的讨论。
这可以做到吗?如果可以,如何做到?
这是我的不起作用的代码!
public class Unsigned8 extends Number implements Comparable<Unsigned8>{
public static final long MAX_VALUE = 256L;
public static final long MIN_VALUE = 0;
private long _Value
我尽了最大的努力在谷歌上搜索,但在一个显示类型转换的表格形式中找不到一个干净的答案。
我想转换这些类型的原因是因为我使用Android NDK从本机代码调用函数。问题是本机代码调用Java中不存在的不同类型。
我实际上没有使用C语言的经验,并且通过快速查看代码发现了以下几种类型。请随时编辑此帖子以添加要转换的不同类型。
From C to Java
long ->
short ->
char ->
unsigned long ->
unsigned short ->
unsigned char ->
byte ->
Int8 ->
#include<iostream>
#include <time.h>
#include <sys/timeb.h>
using namespace std;
bool IsPrime( unsigned long long n );
unsigned long long pow2( unsigned n );
unsigned long long Mersenne( unsigned n);
unsigned long long Sqrt ( unsigned long long n );
bool LucasLehmer ( unsigned lo
对于我试图从头文件中使用的每个函数,我都会得到对错误的“未定义引用”。当我将函数体直接复制到"main.cpp“中时,代码工作得很好,但是我希望使用头文件实现它。我真的很困惑。甚至尝试将函数声明和函数体封装在名称空间中的"RSA.h“和"RSA.cpp”中,但仍然没有成功。
我得到的错误:
这是我的密码。
RSA.h
#ifndef RSA_H_INCLUDED
#define RSA_H_INCLUDED
#include<stdlib.h>
bool isPrime(unsigned long long n);
unsigned long long
我很确定这与void函数指针的向量有关,但我真的不能理解它。
有人能帮我分析一下吗?
__gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > >::difference_type __gnu_cxx::operator-<unsigned long long const*, unsigned long long const*, std::vector<un
我正在进行一些Java集成,通过C库使用了werid类型映射(其中有更多的映射;):
#define CHAR char /* 8 bit signed int */
#define SHORT short /* 16 bit signed int */
#define INT int /* "natural" length signed int */
#define LONG
从Java调用Corelis Jtag USB-1149.1_1E中的DLL方法时遇到问题,即使我可以从labview调用它。在Corelis用户指南中,scan_multiple有五个论点。但是data_in是一个返回值,因此,我不认为它应该是一个参数/输入。我应该如何在Java中构造我的scan_Multiple()?有多少个参数?
文档:
int scan_Multiple(const long n_commands,const unsigned long *method,const unsigned short *data_out,unsigned long *bit_length,u
我的Java应用程序在JIT编译期间工作了几天之后就失败了。可能是本机内存碎片化,但它只需要8Kb .我有700多条线。2GB堆( jvm失败时只使用1Gb )请帮助解决这个问题。
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8192 bytes for committing reserved memory.
# Possible reasons:
# The system is o