Delphi 获取字节的高位4位

Delphi 获取字节的高位4位,delphi,byte,bit,bits,Delphi,Byte,Bit,Bits,我正在尝试获取字节的上4位 这是我迄今为止的尝试: function Upper4Bits(const X : Byte): Byte; type BS = set of 0..7; var K : Byte; Q: BS; begin Q := []; for K := 0 to 3 do {is it right? upper?} {what i need here?} Include(Q, {what i put here}); Upper4B

我正在尝试获取
字节的上4位

这是我迄今为止的尝试:

function Upper4Bits(const X : Byte): Byte;
type 
   BS = set of 0..7;
var 
   K : Byte; Q: BS;
begin
  Q := [];
  for K := 0 to 3 do {is it right? upper?}
    {what i need here?}
    Include(Q, {what i put here});

  Upper4Bits := Byte(Q)
end;

提前谢谢。

如何
大写4位:=X Shr 4

根据您对kotlinski答案的评论,您需要
结果:=(字节1和$F0)或(字节3和$0F)

这些位的格式是什么?作为字节,只需取4个高位并将其转换为1byte@Ismail:这正是代码
X shr 4
所做的。(如果您想改为使用较低的四个字节,则必须改为使用
X和$F
。@Ismail,大卫:我只是想澄清一下-
1101011shr 4=0000 1101=1101
,而
1101011和$F0=1101011和11110000=11010000
。在获取字节1的上4字节和字节3的下4字节后,如何将它们放入Q:这是真的吗:Include(Q,byte1shr 4);包括(Q、字节3和$F)?我有一个:字节1字节字节字节2字节3字节字节4字节0000-00000000 0000-00000000高位4位12位低位12位我想把字节1的高位4位和字节3的低位4位变成1字节,我想我的问题现在很清楚了。这个评论应该放在你的问题里。你的问题毫无用处,因为你接受了一个没有意义的答案,仅仅考虑到你的问题。+1因为你窃取了我的想法,并把它变成了PNG!(可惜你把左右混淆了。)PNG也加1。适当地使用图形帮助了很多,我认为,在这里应该更经常地这样做。(@PhiS:这正是我所说的…)请修复此图像。它获得了3票优势,但实力很弱。除了shl/shr错误之外,在这两种情况下,箭头都指向结果的中间。而且没有
来组合事物。移位法也是错误的,因为OP希望将b1的前四位和b3的下四位结合起来。@Ian,修复了图像中的shl->shr。因此OP希望一个字节的前四位和另一个字节的下四位,而不仅仅是上四位随shr移动。希望OP能花些时间更准确地问他的问题。真的!事实上,我是通过他的一个评论发现的。我对你的答案投了赞成票,对这个问题投了反对票,因为这是一个很好的答案,对一个没用的问题。如果OP编辑了这个问题,使它不是无用的,那么我将删除否决票。