나는이 코드를 진수하는이 64bit를 포함 바이너리 문자열로 변환하기 위해 노력하고있어 :자바에서 64 비트를 포함하는 이진 문자열을 16 진수로 변환 하시겠습니까?
String mm = "1000010111101000000100110101010000001111000010101011010000000101";
String v = new BigInteger(mm, 2).toString(16);
v=String.format("%64x", v);
를하지만 나에게이 예외 제공 :
Exception in thread "main" java.util.IllegalFormatConversionException: x != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at test.main(test.java:332)
잘못 왜 점점 무엇을?
v=String.format("%64x", v);
이것 :이
16 진수 문자열보다. 'BigInteger' 생성자에서 16을 사용하는 이유는 무엇입니까? 2 일까요? –
@JohnColeman 죄송합니다, 당신 말이 맞습니다. 나는이 질문을 게시 할 때 편집하고 잊어 버렸습니다. 고마워. – Sivar
당신의'String.format ("% 64x", v);'인자'v'를'unsigned int'로 취급하고 그것을 16 진법으로 포맷팅하는'x'의 타입 문자를 사용합니다 - 그러나'v' 이미 String입니다. –