乘以 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 之间的数字,包括 Z
、Y
、X
和 W
,该函数会将它们组合成一个十进制与我们的数字“连接”:
Z = 23
Y = 17
X = 42
W = 98
result: 23174298
// Z = 23
// Y = 17
// X = 42
// W = 98
我以前见过有人将位乘以 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 之间的数字,包括 Z
、Y
、X
和 W
,该函数会将它们组合成一个十进制与我们的数字“连接”:
Z = 23
Y = 17
X = 42
W = 98
result: 23174298
// Z = 23
// Y = 17
// X = 42
// W = 98