suchen
HeimBackend-EntwicklungPHP-Tutorial请教这个 crc 16 的java代码怎么转换成php的

请问这个 crc 16 的java代码如何转换成php的

本帖最后由 oelenson 于 2014-06-21 12:49:27 编辑 请问这个 crc 16 的java代码如何转换成php的,自己用php 转的代码不对

$str2='AQEBAQEB';
$str2=base64_decode($str2); 


java 代码

public static int CRC16(final byte[] buffer) {<br />		int crc = 0xffff;<br /><br />		for (int i = 0; i < buffer.length; i++) {<br />			crc = ((crc >>> 8) | (crc << 8)) & 0xffff;<br />			crc ^= (buffer[i] & 0xff);<br />			crc ^= ((crc & 0xff) >> 4);<br />			crc ^= (crc << 12) & 0xffff;<br />			crc ^= ((crc & 0xff) << 5) & 0xffff;<br />		}<br />		crc &= 0xffff;<br /><br />		return crc;<br />	}

function uRShift($a, $b)<br />{<br />    if($b == 0) return $a;<br />    return ($a >> $b) & ~(1<<(8*PHP_INT_SIZE-1)>>($b-1));<br />} <br /><br /><br /><br />function crc16($buffer) {<br /> $crc = 0xffff;<br /> for ($i = 0; $i < strlen($buffer); $i++) {<br /> $crc = ((uRShift($crc,8)) | ($crc << 8)) & 0xffff;<br /> $crc ^= ($buffer[$i] & 0xff);<br /> $crc ^= (($crc & 0xff) >> 4);<br /> $crc ^= ($crc << 12) & 0xffff;<br /> $crc ^= (($crc & 0xff) << 5) & 0xffff;<br /> }<br /> $crc &= 0xffff;<br /><br /> return $crc;<br /> }

------解决方案--------------------
java 的 >>> (左补0右移) 在 php 中不需特殊处理,可直接 >>
至多将 (crc >>> 8) 译为 (($crc >> 8) & 0xff) 

java 的 byte[] 类型,没有对应的 php 数据类型
你可以逐字节取内码 ord($buffer[$i]) 
也可以一进函数就 $buffer = array_values(unpack('C', $buffer));
unpack('C', $buffer) 返回的数组是从下标 1 开始的,所以要 array_values 整理一下
如果用 foreach 循环,或 for 循环从 1 开始就不需要整理了

其他应该没什么了

如果觉得还有问题,请给出 java 运行的几组结果
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was ist PDO in PHP?Was ist PDO in PHP?Apr 28, 2025 pm 04:51 PM

In dem Artikel werden PHP -Datenobjekte (PDO) erörtert, eine Erweiterung für den Datenbankzugriff in PHP. Es zeigt die Rolle von PDO bei der Verbesserung der Sicherheit durch vorbereitete Aussagen und deren Vorteile gegenüber MySQLI, einschließlich Datenbankabstraktion und besserer Fehlerbehandlung.

Was ist Memcache und Memcached in PHP? Ist es möglich, eine einzelne Instanz eines Memcache zwischen mehreren PHP -Projekten zu teilen?Was ist Memcache und Memcached in PHP? Ist es möglich, eine einzelne Instanz eines Memcache zwischen mehreren PHP -Projekten zu teilen?Apr 28, 2025 pm 04:47 PM

Memcache und Memcached sind PHP -Caching -Systeme, die Web -Apps beschleunigen, indem die Datenbanklast reduziert wird. Eine einzelne Instanz kann zwischen Projekten mit sorgfältigem Schlüsselmanagement geteilt werden.

Was sind die Schritte, um eine neue Datenbank mit MySQL und PHP zu erstellen?Was sind die Schritte, um eine neue Datenbank mit MySQL und PHP zu erstellen?Apr 28, 2025 pm 04:44 PM

In Artikel werden Schritte zum Erstellen und Verwalten von MySQL -Datenbanken mithilfe von PHP erörtert und konzentriert sich auf Verbindung, Erstellung, gemeinsame Fehler und Sicherheitsmaßnahmen.

Interagiert JavaScript mit PHP?Interagiert JavaScript mit PHP?Apr 28, 2025 pm 04:43 PM

In dem Artikel wird erläutert, wie JavaScript und PHP aufgrund ihrer unterschiedlichen Umgebungen indirekt durch HTTP -Anfragen interagieren. Es deckt Methoden zum Senden von Daten von JavaScript an PHP ab und zeigt Sicherheitsüberlegungen wie Datenvalidierung und Protokoll

Wie führe ich ein PHP -Skript aus der Befehlszeile aus?Wie führe ich ein PHP -Skript aus der Befehlszeile aus?Apr 28, 2025 pm 04:41 PM

In dem Artikel werden die Ausführung von PHP -Skripten aus der Befehlszeile beschrieben, einschließlich Schritten, gemeinsamen Optionen, Fehlerbehebungsfehlern und Sicherheitsüberlegungen.

Was ist Birne in PHP?Was ist Birne in PHP?Apr 28, 2025 pm 04:38 PM

Pear ist ein PHP -Framework für wiederverwendbare Komponenten, die die Entwicklung mit Paketmanagement, Codierungsstandards und Unterstützung der Community verbessern.

Was sind die Verwendung von PHP?Was sind die Verwendung von PHP?Apr 28, 2025 pm 04:37 PM

PHP ist eine vielseitige Skriptsprache, die hauptsächlich für die Webentwicklung verwendet wird und dynamische Seiten erstellt, und kann auch für Befehlszeilen-Skript-, Desktop-Apps und API-Entwicklung verwendet werden.

Wie war der alte Name von PHP?Wie war der alte Name von PHP?Apr 28, 2025 pm 04:36 PM

In dem Artikel werden 1995 die Entwicklung von PHP von "Personal Home Page Tools" von "PHP: Hypertext Precessor" im Jahr 1998 erörtert, was seine erweiterte Verwendung über persönliche Websites hinaus widerspiegelt.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool