Nig*_*gel 1 c# reverse-engineering
我正在逆转文件编写器的源代码,这里是读/写int(或者更确切地说是ushorts)的方法:
BinaryReader _Reader;
BinaryWriter _Writer;
void RawWriteInt16(int value)
{
byte a = (byte)(value & 255);
byte b = (byte)(value >> 8 & 255);
_Writer.Write(a);
_Writer.Write(b);
}
ushort RawReadUInt16()
{
int num = _Reader.ReadByte();
int num2 = _Reader.ReadByte();
return (ushort)((num2 << 8) + num);
}
Run Code Online (Sandbox Code Playgroud)
所以,你能解释一下为什么&255(11111111)总是一样的和变化?
PS我需要这篇文章,并会给你信任.您可以在此处查看,也可以在codeproject上查看:Sequential-byte-serializer
谢谢你的兴趣.积分已经给了@Sentry和@Rotem.当文章获得批准时,我还会发布codeproject url
该代码将16位整数值转换为两个(8位)字节值:
## byte a = (byte)(value & 255); ##
(int)value: 1101 0010 0011 1000
(int) 255: 0000 0000 1111 1111
bitwise &: 0000 0000 0011 1000
to byte: 0011 1000
Run Code Online (Sandbox Code Playgroud)
然后
## byte b = (byte)(value >> 8 & 255); ##
(int)value: 1101 0010 0011 1000
>> 8: 0000 0000 1101 0010
(int) 255: 0000 0000 1111 1111
bitwise &: 0000 0000 1101 0010
to byte: 1101 0010
Run Code Online (Sandbox Code Playgroud)
所以你有两个字节代表16位int的高低部分