怎么用java读写16进制的数?

怎么用java读写16进制的数?,第1张

public static int hexToDec(String sn) {

if (null == sn &&0 == sn.trim().length())

throw new IllegalArgumentException("接收的参数 “" + sn + "” 不是十六进制表示形式!")

final String P = "0x"

if (sn.toLowerCase().startsWith(P)) {

final String regex = "[^\\da-fA-F]"

int i = Regexutils.matcheRegexp(sn.substring(2), regex, false)

if (0 != i)

throw new IllegalArgumentException("接收的参数 “" + sn

+ "” 不是十六进制表示形式!")

else {

char[] cs = sn.substring(2).toUpperCase().toCharArray()

char c

for (int j = 0j <cs.lengthj++) {

c = cs[j]

i += toDec(c, (cs.length - j - 1))

}

return i

}

}

return 0

}

private static int toDec(char c, int i) {

final double N = 16.0

int n = getNum(c)

int r = (int) (n * Math.pow(N, (double) i))

return r

}

private static int getNum(char c) {

// 字符F转换成为数字为70

if ((int) c >70)

return 0

int i = 0

switch (c) {

case ''A'':

i = 10

break

case ''B'':

i = 11

break

case ''C'':

i = 12

break

case ''D'':

i = 13

break

case ''E'':

i = 14

break

case ''F'':

i = 15

break

case ''a'':

i = 10

break

case ''b'':

i = 11

break

case ''c'':

i = 12

break

case ''d'':

i = 13

break

case ''e'':

i = 14

break

case ''f'':

i = 15

break

}

if (0 == i) {

// 字符0转换成为数字为48

return (int) c - 48

} else

return i

}

Scanner console =new Scanner(System.in)

System.out.print("输入一个16进制的RGB颜色:")

String strRGB = console.next()

int RGB = Integer.valueOf(strRGB, 16)

System.out.println(RGB)

你要是输入的数不是十六进制的就会错哈,我这儿没有加验证之类的...

读取后,两个字符转一次二进制字符串然后生成一个二进制的字符串,一次取24位字符 ,然后取第13个字符到第16个字符强转为十六进制的字符串 然后+第1个至第8个字符强转为十六进制的字符串 组成信号0的数字,写到文件或者别的地方,信号1同理可转.感觉有点低端,不知可有别的精妙做法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12088554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存