Java 如何从组合布尔值中获取十六进制值?
我想从四个布尔变量中得到一个十六进制值,类似于以下示例:Java 如何从组合布尔值中获取十六进制值?,java,Java,我想从四个布尔变量中得到一个十六进制值,类似于以下示例: boolean[] m = {true, false, true, true}; 我想得到一个字符串或字符,它在二进制中包含B,意思是1011 PS:我正在开发Android应用程序。您可以使用以下逻辑: String x = ""; for(int i = 0 ; i < m.length ; i++){ if(m[i]) x += "1"; else x += "0"; } L
boolean[] m = {true, false, true, true};
我想得到一个字符串或字符,它在二进制中包含B
,意思是1011
PS:我正在开发Android应用程序。您可以使用以下逻辑:
String x = "";
for(int i = 0 ; i < m.length ; i++){
if(m[i])
x += "1";
else
x += "0";
}
Log.i("values = ",x);
String x=”“;
对于(int i=0;i
您可以使用以下逻辑:
String x = "";
for(int i = 0 ; i < m.length ; i++){
if(m[i])
x += "1";
else
x += "0";
}
Log.i("values = ",x);
String x=”“;
对于(int i=0;i
您可以使用下面的代码获取二进制字符串、整数值和十六进制值
boolean[] m = {true,false,true,true};
String binaryStr = "";
for (boolean bit : m) {
binaryStr = binaryStr + ((bit) ? "1" : "0" );
}
int decimal = Integer.parseInt(binaryStr , 2);
String hexStr = Integer.toString(decimal , 16);
在上面的代码中,
binaryStr
是您的二进制字符串,即1011
,其等效的十进制和十六进制值是decimal
和hextstr您可以使用下面的代码来获取二进制字符串、整数值和十六进制值
boolean[] m = {true,false,true,true};
String binaryStr = "";
for (boolean bit : m) {
binaryStr = binaryStr + ((bit) ? "1" : "0" );
}
int decimal = Integer.parseInt(binaryStr , 2);
String hexStr = Integer.toString(decimal , 16);
在上面的代码中,binaryStr
是您的二进制字符串,即1011
,其等效的十进制和十六进制值是decimal
和hexStr
,对于每个布尔值,如果Binary
字符串1true
0,则使用Integer.parseInt()
将二进制字符串转换为整数实例,最后使用Integer.toHexString()
方法将整数转换为十六进制字符串
@org.junit.Test
public void test() throws Exception{
boolean[] m = {true, false, true, true};
String binary = "";
for(boolean b : m) binary += b ? 1 : 0;
String hex = Integer.toHexString(Integer.parseInt(binary, 2));
System.out.println(hex);
}
对于每个布尔值,如果true
0,则附加到binary
string1,否则,则使用Integer.parseInt()
将二进制字符串转换为整数实例,最后使用Integer.tohextstring()方法将整数转换为十六进制字符串
@org.junit.Test
public void test() throws Exception{
boolean[] m = {true, false, true, true};
String binary = "";
for(boolean b : m) binary += b ? 1 : 0;
String hex = Integer.toHexString(Integer.parseInt(binary, 2));
System.out.println(hex);
}
然后把二进制字符串转换成十六进制值
只需将二进制字符串转换为十六进制值即可虽然上述答案确实有效,但它们有其局限性。由于32位整数限制,第一个限制是32布尔的上限。但是上面的代码也使用了内置的方法,它们不允许初学者掌握真正发生的事情
如果你只是想完成工作,就用上面的东西。这样可能会更有效率。我之所以发布这个解决方案,是因为我觉得它可以让那些想要掌握实际概念的人做得更好
(希望这些评论有点道理)
如果数组长度不是4的倍数,则需要将数组设置为4的倍数。我下面有一些代码可以做到这一点。它没有被评论,可能也没有那么有效,但它是有效的
public static boolean[] makeMultOf4(boolean[] arr){
if(arr.length%4==0){return arr;}
boolean[] array=new boolean[arr.length+(arr.length%4==1?3:arr.length%4==2?2:1)];
for(int i=0;i<array.length;i++){
try{
array[i]=arr[i-(arr.length%4==1?3:arr.length%4==2?2:1)];
}catch(Exception e){
array[i]=false;
}
}
return array;
}
publicstaticboolean[]makeMultOf4(boolean[]arr){
如果(arr.length%4==0){返回arr;}
布尔[]数组=新的布尔值[arr.length+(arr.length%4==1?3:arr.length%4==2?2:1)];
对于(int i=0;i虽然上述答案确实有效,但它们也有其局限性。由于32位整数的限制,第一个限制是32个布尔值的上限。但上述代码也使用内置方法,它们不允许初学者掌握实际情况
如果你只是想完成这项工作,使用上面的方法。可能会更有效率。我只是发布这个解决方案,因为我觉得它会让那些想要更好地掌握实际概念的人做得更好
(希望这些评论有点道理)
如果你的数组长度不是4的倍数,那么你需要将数组设置为4的倍数。我下面有一些代码可以做到这一点。没有注释,可能效率不高,但它可以工作
public static boolean[] makeMultOf4(boolean[] arr){
if(arr.length%4==0){return arr;}
boolean[] array=new boolean[arr.length+(arr.length%4==1?3:arr.length%4==2?2:1)];
for(int i=0;i<array.length;i++){
try{
array[i]=arr[i-(arr.length%4==1?3:arr.length%4==2?2:1)];
}catch(Exception e){
array[i]=false;
}
}
return array;
}
publicstaticboolean[]makeMultOf4(boolean[]arr){
如果(arr.length%4==0){返回arr;}
布尔[]数组=新的布尔值[arr.length+(arr.length%4==1?3:arr.length%4==2?2:1)];
对于(int i=0;我请详细解释你的问题。这是基本的Java编程;它不是特定于Android的。它与Android Studio无关,Android Studio只是Android的一个IDE。@S.L.Barth更正Studio。很多新手都这样做。非常烦人。请详细解释你的问题。这是基本的Java编程;没有具体说明c到Android。它与Android Studio无关,Android Studio只是Android的一个IDE。@S.L.Barth更正Studio。很多新手都这样做。非常烦人。请编辑更多信息。不鼓励只编写代码和“尝试此”答案,因为它们不包含可搜索的内容,也不解释为什么有人应该“尝试此”。请使用更多信息进行编辑。不鼓励使用“仅编码”和“尝试此”答案,因为它们不包含可搜索的内容,并且不解释为什么有人应该“尝试此”。