簡體   English   中英

C到PHP的未簽名字符問題

[英]C to PHP unsigned char issue

我一輩子都無法弄清楚如何用PHP編寫這一行代碼。 我以前從未在PHP中遇到過類似的問題,希望能對您有所幫助。

$OCTET_data->B[0] = (unsigned char) (ror8 ((unsigned char) (ror8 ($OCTET_data->B[0], 1) - 1), 1) - 1) ^ $OCTET_data->B[4];

我一輩子都無法弄清楚你想做什么。

但是我認為您正在尋找“打包”功能。
http://php.net/manual/zh/function.pack.php

   $unsignedchar =  pack("C",$char);  // convert a char character to an unsigned char byte

原始C代碼中的(unsigned char)強制轉換會從操作數中丟棄所有不適合unsigned char位。 該代碼顯然假定一個unsigned char有8位,因此強制轉換等效於2 8 -1的按位與,您可以編寫

$OCTET_data->B[0] = (ror8((ror8($OCTET_data->B[0], 1)-1)&255, 1)-1)&255^$OCTET_data->B[4];

或者,也許更清楚一點

$OCTET_data->B[0] = ror8(ror8($OCTET_data->B[0], 1
                             )-1 & 255, 1
                        )-1 & 255 ^ $OCTET_data->B[4];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM