乘以 256 有什么作用

What does multiplying a bit by 256 do

我以前见过有人将位乘以 256,我想知道他们为什么这样做以及它有什么作用?

local function getBits32(streamString)
  local W, X, Y, Z  = string.byte(streamString, streamPosition, streamPositon + 3);
  
  streamPosition = streamPosition + 4;
  
  return (Z * 16777216) + (Y * 65536) + (X * 256) + W;
end;

您发布的函数将四个 8 位数字(字节)合并为一个 32 位数字。程序中的每一个常量,即256、65536、16777216,都对应一个二进制数,在一个1之后有8、16、24个0。乘法执行移位,与乘以 10、100、1000 等的方式相同。在十进制系统中执行移位。

为了说明最后一点,考虑这个函数:

return (Z * 1000000) + (Y * 10000) + (X * 100) + W;

如果我们传递 0 到 99 之间的数字,包括 ZYXW,该函数会将它们组合成一个十进制与我们的数字“连接”:

Z = 23
Y = 17
X = 42
W = 98
result: 23174298
//  Z = 23
//  Y =   17
//  X =     42
//  W =       98