Java 字符串为\x03\x00\x00\x00到整数

Java 字符串为\x03\x00\x00\x00到整数,java,string,hex,Java,String,Hex,希洛: 我有一个问题,我用c语言解决了,但现在我想用哈瓦语言解决: 我有一个类似于“\x03\x00\x00\x00”的字符串 这表示整数的十六进制值。我转换为0x03\0x00。。。 现在我想得到整数,但我不知道如何在java中实现 有人能给我一些建议吗 提前谢谢 (不使用byte[]数组直接使用此格式('\x03\x00\x00\x00\x00')是否有某种方法?在C中,我可以直接使用此格式构建整数(int)?我会这样做: Scanner sc = new Scanner(inputStri

希洛:

我有一个问题,我用c语言解决了,但现在我想用哈瓦语言解决: 我有一个类似于“\x03\x00\x00\x00”的字符串 这表示整数的十六进制值。我转换为0x03\0x00。。。 现在我想得到整数,但我不知道如何在java中实现

有人能给我一些建议吗

提前谢谢


(不使用byte[]数组直接使用此格式('\x03\x00\x00\x00\x00')是否有某种方法?在C中,我可以直接使用此格式构建整数(int)?

我会这样做:

Scanner sc = new Scanner(inputString);
int value = 0;
for (int i = 0; i < 4; i++) {
    sc.next("\\\\x");
    byte b = sc.nextByte(16);
    value = (value << 8) | (b & 0xff);
}
if (sc.hasNext()) {
    throw new SomeException("Unexpected stuff at the end");
}
Scanner sc=新扫描仪(inputString);
int值=0;
对于(int i=0;i<4;i++){
sc.next(“\\\\x”);
字节b=sc.nextByte(16);

value=(value这是我的一行解决方案

Integer.parseInt("\\x03\\x00\\x00\\x00".replaceAll("\\\\x", ""), 16)

当然,您可以将其封装在函数中。

是的……但它会被这样的输入“\x3\x0\x0\x0”打断,即“like”这个例子提供了。是的,但考虑到这个示例,我假设即使是小于\x10的数字,也会提供两个六位数。好吧,这就是像这样的单线解决方案的问题。如果您的假设被证明是错误的,它们是脆弱的。至少我的解决方案会抛出一个异常,如果1)是“\x”没有,或者其中一个组件中有太多的数字。做出正确的假设与行数无关,当我们谈论假设时,如果输入字符串只是\xA0\x00,您的解决方案会发生什么?但是让我们停止恶作剧,并为最初的嘲弄感到抱歉,=)只是我不喜欢word“不可能”很抱歉我的回答延迟了,我的第一个想法是转换为整数。但是我必须转换不同大小的结构。我将知道大小(而不是字段)我也必须以这种方式介绍这些值。因此,我正在寻找一些想法,以便以后能够理解我自己如何做。非常感谢你的回答,我不完全理解这个解决方案,它会在sc中给我错误。下一步(\\\\x);我想知道你为什么做:value=(现在值,我对它进行了一些小的更改,我使用sc.useDelimiter(\\\\x”);而不是sc.next(),我可以理解您的解决方案,非常感谢
Integer.parseInt("\\x03\\x00\\x00\\x00".replaceAll("\\\\x", ""), 16)