我现在知道以下是正确的:
我知道上面的声音听起来很白痴,但我想在每一步都做到这一点。
所以我有值1和29,如果我正确的话,它们都是8位。
1: 0 0 0 0 0 0 0 1
29: 0 0 0 1 1 0 0 1
现在因为这些是8位我可以做以下
char ff = (char) 1;
char off = (char) 29;
这就是我故事中的两个价值观。
我现在想要对这些值进行汇总,看起来如此 1 2 9二进制,即:0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1
我目前在做:
short concat = (short) (ff | off)
但是得到结果29时它应该是285,因为二进制文件将是
32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1
到底哪里出错了:(?
- 更新代码解决方案 -
byte of= (byte) 29;
byte fm1 = (byte) 1;
char ph1 = (char) (fm1<<8 | of);
或是 短ph2 =(短)(fm1 <&lt; 8 | of);
因为这两个都是16位好吗?
System.out.println((int)ph1);
答案 0 :(得分:3)
您需要将位向左移动8。
short concat = (short) (ff <<8 | off)
管道是按位或者,所以你最后把相同的位放在同一个地方,把1放在第一个地方,或者第二个char有1个。
答案 1 :(得分:1)
char是两个字节
字节是一个字节
byte ff = (byte) 1;
byte off = (byte) 29;
short concat = (ff << 8)|off;