Thread C Funktion in perl umsetzen (16 answers)
Opened by piet at 2015-02-11 13:03

hlubenow
 2015-02-13 01:13
#179644 #179644
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Ich weiß nicht so recht, was ich da tue, aber dieses läuft schonmal irgendwie:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl

use warnings;
use strict;

use Inline C => <<'END_OF_C_CODE';

#include <stdint.h>

SV* normalChecksum8(char *b, int n)
{
  int i;
  uint16_t a, bb;

  //Sums bytes 1 to n-1 unsigned to a 2 byte value. Sums quotient and
  //remainder of 256 division.  Again, sums quotient and remainder of
  //256 division.
  for(i = 1, a = 0; i < n; i++)
    a+=(uint16_t)b[i];

  bb = a / 256;
  a = (a - 256 * bb) + bb;
  bb = a / 256;

  return newSVpvf("%d", (a-256*bb)+bb);
}

END_OF_C_CODE

print normalChecksum8("3532",2). "\n";

Ist vielleicht doch besser, den C-Code nach Perl zu übersetzen.

View full thread C Funktion in perl umsetzen