Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中目标C的LongValue?_Java_Android_Objective C - Fatal编程技术网

Java中目标C的LongValue?

Java中目标C的LongValue?,java,android,objective-c,Java,Android,Objective C,如何在Java中转换这个目标C代码 NSMutableString * thisPart = [[NSMutableString alloc] init]; UInt64 intVal = (UInt64)[thisPart longLongValue]; if (!intVal) { isBad = YES; break; } 我一直在网上搜索,但没有在网上找到任何有用的信息 如果我有: UInt32 _tmpPacket_packetId; _tmpPacket_packetId = (U

如何在Java中转换这个目标C代码

NSMutableString * thisPart = [[NSMutableString alloc] init];
UInt64 intVal = (UInt64)[thisPart longLongValue];
if (!intVal) { isBad = YES; break; }
我一直在网上搜索,但没有在网上找到任何有用的信息

如果我有:

UInt32 _tmpPacket_packetId;
_tmpPacket_packetId = (UInt32)intVal;  // UInt64 intVal = (UInt64)[thisPart longLongValue];
我可以这样做吗:

BigInteger tmpPacket_packetId = intVal;
事实上,正确的问题是:这样做是否正确,以实现与目标C相同的目标

String str = "1234567890";
long l = Long.parseLong(str);

您需要对解析调用进行错误处理。

我假设您不关心NSMutableString位,它可能类似于StringBuilder/StringBuffer类。UInt64似乎是64位无符号整数?然后可以使用


它给了我一个错误:无法对long基元类型调用longValue()。您不需要
longValue()
,它将自动取消装箱(至少在Java>5中是这样)。编辑:事实上,正如夸夸其谈所发现的,
parseLong
返回一个原语
long
,但是如果它返回了
long
,则此注释将适用。我假设UInt64是一个无符号的long,因此您将遇到溢出问题。但如果不是,那么这就行了。@Rulmeq,只有当这个数字实际用于计算时才行。如果它只是存储的,然后通过网络发送,则可以将未签名的数字存储在有符号的long格式中。编辑:但现在我想起来了,在从字符串解析时,这似乎是一个不太可能的用例。清晨brainfart,我编辑以删除不必要的
longValue
。实际上这是一项工作。但现在我做这件事时出错了:**thisPart=tmp.substring(lastLoc,needsSize);**其中***String tmp=incomingData.toString()//(输入数据为字节[])。**它说的是将这个部分转换成字符串。然后不要使用StringBuilder,只使用字符串。我想说的是,您在Objective-c中使用了一个NSMutableString,最后一个问题是:**tmpPacket_packetId=(UInt32)intVal;**其中***UInt32\u tmpPacket\u packetId***我可以这样做:biginger tmpPacket\u packetId=intVal//我不确定它是否像目标C中那样正确。你能把这一部分添加到你的问题中吗,我发现在评论中很难阅读。实际上,当我研究Java基本数据类型时,我看到byte=8bit、short=16bit、int=32bit和long=64bit。我可以用它们代替目标C中的UInt64、Uint32、Uint8吗?
StringBuilder thisPart = new StringBuilder("12345678901234567890");
try {
    BigInteger intVal = new BigInteger(thisPart.toString());
} catch (NumberFormatException e) {
    System.out.println("Bad value");
    isBad = true;
    break; // or return or what have you
}