Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android studio-字节操作-更改值_Java_Android_Byte_Operations - Fatal编程技术网

Java Android studio-字节操作-更改值

Java Android studio-字节操作-更改值,java,android,byte,operations,Java,Android,Byte,Operations,我对位操作有问题 int progress = slider.getProgress(); value of user input 然后我必须做左移位,把它改成十六进制 int shl = 1<<progress-1; String hexStr = Integer.toHexString(shl); 现在问题来了 如果用户设置为示例2,则为ok 0b100=0x04 但如果用户在命令[2]中设置了5 0b10000=hexStr=10,则会得到值0x0A 为什么它会改变价值 “

我对位操作有问题

int progress = slider.getProgress(); value of user input
然后我必须做左移位,把它改成十六进制

int shl = 1<<progress-1;
String hexStr = Integer.toHexString(shl);
现在问题来了 如果用户设置为示例2,则为ok 0b100=0x04

但如果用户在命令[2]中设置了5 0b10000=hexStr=10,则会得到值0x0A

为什么它会改变价值

“但是,如果用户在命令[2]中设置了5 0b10000=hexStr=10,它将获得值=
0x0A

为什么它会改变值?“

它是正确的。你期望有什么不同的结果

例如:如果
progress
5,则


  • 1那样进行位移位我已经有一段时间没有使用位移位了,但是您确定您确实遇到了错误吗?若我还记得怎么做的话,那个么5是二进制的0101,当位向左移位时,它变成1010。用十六进制表示的10是A,这是您得到的值。如果用户设置为5,我只需要BT发送整个命令中的一个“1”,这意味着第5个led应该点亮10000,如果用户设置为10,则第10个led应该点亮100000000,我没有将十进制转换为二进制或十六进制,但用户输入告诉“1”应该在哪个位置,希望它是清晰的:)
    
    byte bit = Byte.decode(hexStr)
    command[2]=bit;
    
        int progress = 5; 
        int shl = 1 << progress-1; //why??
    
        String hexStr = Integer.toHexString(shl);
        String shlStr = Integer.toString(shl);
    
        String zeroStr = "";
    
        byte bit = Byte.decode(hexStr);
        //command[2]=bit;
    
        System.out.println("shl result string  : "  + shlStr);
        System.out.println("Bytes string hex : "  + hexStr);
    
        //# Padding
        for(int i = 0; i < (progress-1); i++) 
        { zeroStr += "0"; }    
    
        shlStr = "1" + zeroStr;
        //command[2]= Byte.decode(shlStr);
    
        System.out.println("Result string hex : "  + zeroStr);
        System.out.println("shi padding string  : "  + shiStr);