我正在尝试将十六进制代码长8个字符的字符串转换为整数,以便可以进行int比较,而不是对许多不同值进行字符串比较。

我知道在C ++中这是微不足道的,但是我需要在Java中完成。 我需要满足的测试用例本质上是将" AA0F245C"转换为int然后再返回到该字符串,以便我知道它正在正确转换。

我尝试了以下方法:

int decode = Integer.decode("0xAA0F245C");  // NumberFormatException

int decode2 = Integer.decode("AA0F245C"); //NumberFormatException

int parseInt = Integer.parseInt("AA0F245C", 16); //NumberFormatException

int valueOf = Integer.valueOf("AA0F245C", 16); //NumberFormatException

我也尝试一次将两个字符做一次,然后将结果相乘,转换有效,但数字不正确。

int id = 0;

for (int h = 0; h < hex.length(); h= h+2)

{

String sub = hex.subSequence(h, h+2).toString();

if (id == 0)

id = Integer.valueOf(sub, 16);

else

id *= Integer.valueOf(sub, 16);

}

//ID = 8445600 which = 80DEA0 if I convert it back.

不能这么说,我不能使用第三方库,因此必须在Java标准库中完成。

提前谢谢你的帮助。

当您应该转移时,您正在繁殖。

0xAA0F245C = 2853119068但Integer.MAX_VALUE = 0x7fffffff = 2147483647

我知道这个问题已经存在两年了。 但是,java 8启用了另一个解决方案。 他们添加了Integer.parseUnsignedInt("value",radix)方法,可以满足您的目的。 如果该值大于Integer.MAX_VALUE,它将被映射为负数。

对于int而言,它太大了(它是4个字节并有符号)。

采用

Long.parseLong("AA0F245C", 16);

太棒了,谢谢你!我大概应该知道这一点。但这让我感觉好多了,发帖前问的四个人都不知道:)。附带说明一下,我现在必须弄清楚为什么该人编写了我需要比较int的代码,以将它们作为int而不是long来进行编码……这可能意味着其他问题了。除此之外,...谢谢您的快速回答!!!!还要诅咒您的Java,以获取可怕的错误消息..."问题很大"会很有帮助。

当我尝试使用大十六进制字符串时,得到NumberFormatException: For input string:"AF0005E2A6C630059E4754B8799360F5" ...解决方案?

@AnumSheraz您不希望转换为long而是转换为字节数组。参见例如stackoverflow.com/questions/140131/

转换为大量字节数组的另一种方法是使用BigInteger类,如下所示:BigInteger value = new BigInteger(valueString, 16)

你可以这样使用

System.out.println(Integer.decode("0x4d2"))    // output 1234

//and vice versa

System.out.println(Integer.toHexString(1234); //  output is 4d2);

我喜欢这个答案,不知道Integer类中对此有一个通用的,不敏感类型的方法。感谢您的知识。

Java Integer可以处理的最大值是2147483657,即2 ^ 31-1。十六进制数AA0F245C为2853119068(十进制数),并且太大,因此您需要使用

Long.parseLong("AA0F245C", 16);

使它工作。

off:有趣的是,一个更详细的答案虽然在5分钟后得到了14分,但只有1个upvote。尽管是这样,但这个答案并没有说神奇的4个字节并带有签名... hm。

您可以使用带有format参数的parseInt轻松完成此操作。

Integer.parseInt("-FF", 16) ; // returns -255

javadoc整数

链接断开

这是正确的答案:

myPassedColor ="#ffff8c85"

int colorInt = Color.parseColor(myPassedColor)

对于需要将带符号的字节的十六进制表示形式从两个字符的字符串转换为字节(在Java中始终为带符号的字节)的用户,有一个示例。解析十六进制字符串永远不会给出负数,这是错误的,因为从某些角度来看(二进制补码)0xFF为-1。原理是将传入的String解析为大于字节的int,然后包装负数。

我仅显示字节,因此该示例足够简短。

String inputTwoCharHex="FE"; //whatever your microcontroller data is

int i=Integer.parseInt(inputTwoCharHex,16);

//negative numbers is i now look like 128...255

// shortly i>=128

if (i>=Integer.parseInt("80",16)){

//need to wrap-around negative numbers

//we know that FF is 255 which is -1

//and FE is 254 which is -2 and so on

i=-1-Integer.parseInt("FF",16)+i;

//shortly i=-256+i;

}

byte b=(byte)i;

//b is now surely between -128 and +127

可以对其进行编辑以处理更长的数字。只需分别添加更多的FF或00。对于解析8个十六进制字符的带符号整数,您需要使用Long.parseLong,因为FFFF-FFFF(整数-1)在以正数表示时不适合Integer(给出4294967295)。因此,您需要Long来存储它。转换为负数并转换回整数后,它将适合。没有8个字符的十六进制字符串,最后不适合整数。

建议的其他选择是使用BigInteger类。由于十六进制值通常是较大的数字,例如sha256或sha512值,因此它们很容易溢出int和long。其他答案表明,转换为字节数组是一个选项,而Java中经常被遗忘的类BigInterger也是一个选项。

String sha256 ="65f4b384672c2776116d8d6533c69d4b19d140ddec5c191ea4d2cfad7d025ca2";

BigInteger value = new BigInteger(sha256, 16);

System.out.println("value =" + value);

// 46115947372890196580627454674591875001875183744738980595815219240926424751266

//Method for Smaller Number Range:

Integer.parseInt("abc",16);

//Method for Bigger Number Range.

Long.parseLong("abc",16);

//Method for Biggest Number Range.

new BigInteger("abc",16);

java 十六进制转为int_关于java:将十六进制字符串转换为int相关推荐

  1. scala字符串转int_如何在Scala中将十六进制字符串转换为int?

    scala字符串转int The hex string is also known as Hexadecimal Number String is a number created using hex ...

  2. 在Python中将十六进制字符串转换为int

    如何在Python中将十六进制字符串转换为int? 我可能将其设置为" 0xffff "或" ffff ". #1楼 在上述Dan的答案中加上:如果为int() ...

  3. Java将下划线大写方式命名的字符串转换为驼峰式

    Java将下划线大写方式命名的字符串转换为驼峰式 例如: hello_world->helloWorld 方法代码如下: /*** 将下划线大写方式命名的字符串转换为驼峰式.* 如果转换前的下划 ...

  4. 不使用java内置函数,将String字符串转换为int类型

    package com.test;public class AtoiTest {public static void main(String[] args) throws Exception {Str ...

  5. java 二进制字符串转int_java:将二进制字符串转换为int

    我正在尝试将几个二进制字符串转换回int.但它没有转换我的所有二进制字符串,留下了 java.lang.NumberFormatException异常. 这是我的测试代码,带有3个二进制字符串: pu ...

  6. JAVA中将带负数的String字符串转换为int型数组方法

    原始数据: 1 1 0 2 5 1 -3 1 2 2 -1 4 -7 -8 0 -5 去掉空格和换行符 s=s.replaceAll("\r\n",""); s ...

  7. java把含小数点的数字字符串转换为int类型

    String num ="1.00"; int abc =Double.valueOf(num).intValue();//转换为Int类型 转载于:https://www.cnb ...

  8. python怎么将字符串变成int_在Python中,如何将字符串转换为int?

    在从主函数调用子函数时,可以将变量转换为int,然后调用.请参考以下代码:import sys print("Welcome to Calculator\n") print(&qu ...

  9. linux字符串转为整型,C语言将字符串转换为整数

    自定义一个函数,将字符串转换为整数,原型为: int ascii_to_integer( char *string ); 这个字符串参数必须包含一个或多个数字,函数应该把这些数字字符转换为整数并返回这 ...

最新文章

  1. var_export()函数的使用举例(后续添加其他的php输出函数)
  2. [Zer0pts2020]ROR
  3. 对传统视觉惯性的颠覆
  4. php 类名 属性6,php基础知识(类中属性和方法练习)--2018年9月6日14:01:15
  5. java 格式化字符串
  6. (5) 学习笔记_numpy
  7. python判断是否为素数的函数 是返回字符串yes_编写函数,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...
  8. 阿里巴巴的AI“发动机”
  9. fabric2.0 概念, peer、账本和排序服务
  10. java 读取小数位数_java如何获取一个double的小数位数
  11. 我在windows10下,使用CMake gui 编译krita源码,CMake gui报错:LibMyPaint_DIR-NOTFOUND
  12. 五年Java架构师深入剖析微服务架构设计理念与技术体系(值得一看!)
  13. 如何谋杀一门计算机语言?
  14. 小米笔记本android,7代小米笔记本安装凤凰系统(Phoenix OS)显示命令行ANDROID字样
  15. 阿里巴巴mysql集群方案_云原生下,如何实现高可用的MySQL?
  16. 【人物访谈·01期】关于对数据分析前辈的一次行业探讨
  17. 在台式电脑上完美安装Mac OS X操作系统的解决方案
  18. 2012届高三语文每日一练
  19. php框架体验demo,JFinal框架demo运行示例教程
  20. D1. Remove the Substring (从easy到hard)

热门文章

  1. 看我怎样搞定变态女上司
  2. USB接口定义 颜色
  3. 物联网传输技术——ZigBee协议概论
  4. 【极海APM32F4xx Tiny】学习笔记01-模板工程创建
  5. 【Layui】数据表格(与后台交互获取数据)
  6. 数仓、数湖、仓湖一体
  7. ChinaSoft 论坛巡礼 | 全国大学生软件测试大赛
  8. 关于int变量占用字节的理解
  9. matlab rs232 fpga,RS232接口的FPGA程序设计(VHDL)
  10. 宅家36天咸鱼翻身入职腾讯