试图理解这个代码片段的数学。提供的令牌始终为 8 位数字。它进入一个类型为 long 的类。令牌被分解成单独的字节以通过流发送。
long token = 85838276;
byte cp[] = {
1, 0, 0, 0, 0
};
cp[4] = (byte)(int)token; // not sure what would become of token
cp[3] = (byte)(int)(token >> 8);
cp[2] = (byte)(int)(token >> 16);
cp[1] = (byte)(int)(token >> 24);
我理解类型转换 (byte) 部分,但没有 (byte)(int) 在一起。long 类型的令牌是否必须一次降级一种简单类型?你不能省略 (int) 并得到相同的结果吗?
顺序是重要的还是只是为了清楚起见从 cp[4] 写到 cp[1] 。我意识到 cp[4] 中的令牌将不等于原始值,因为字节类型可以容纳的最大值是 127。一旦到达目的地,是否可以重新创建原始令牌?
最后我想在 php.ini 中重新创建它。我知道一个字符串已经是一个字节流。发送的每个字符都是一个字节。我是否需要发送一个字符串,每个字符都等于它所代表的整数值。比如一个for 41
更新:所以根据 Louis Wasserman 的回答,当类型转换为字节时,只保留最后一个字节。
Token in binary: 101000111011100100111000100 // cp[4] = 11000100
Token shifted 08: 1010001110111001001 // cp[3] = 11001001
Token shifted 16: 10100011101 // cp[2] = 00011101
Token shifted 24: 101 // cp[1] = 101