moedule
17-06-2004, 00:48
hey
ich hab schon vor längerem ein winziges programm geschrieben, mit dem man von einem meßprogramm geschriebene daten (binär) in menschlich lesbare (also ascii text) umwandelt (die ersten 1670 zeichen werden weggeschmissen, danach kommen 256 integer werte, die einfach mit nummerierung ausgegeben werden)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE * ein;
int inFileArg=1;
int i,j;
int a[256];
int x;
char b[1670];
if (argc > 2 || argc == 1)
{
printf ("by Moe 2002\n");
printf("usage: programm datei\n");
}
else
{
ein = fopen(argv[inFileArg],"rb");
x=fread(b,sizeof(char), 1670,ein);
x=fread(a,sizeof(int), 256,ein);
for (i=0;i<256;i++)
{
printf("%i %i\n",i,a[i]);
}
fclose(ein);
}
}
unter linux (und windows ebenso), gibt ungefähr soetwas aus...
<snip>
232 0
233 0
234 1
235 0
236 0
237 0
238 0
239 0
240 0
241 0
242 2
243 1
244 1
245 1
246 1
247 0
248 0
249 0
250 1
251 0
252 0
253 0
254 0
255 0
einige meiner freunde haben einen mac und ich dachte kein problem, compilier ich es halt auf dem mac und gut ist. dem ist aber leider nicht so, denn wie man sehen kann kommen einfach die falschen werte dabei raus
<snip>
232 0
233 0
234 16777216
235 0
236 0
237 0
238 0
239 0
240 0
241 0
242 33554432
243 16777216
244 16777216
245 16777216
246 16777216
247 0
248 0
249 0
250 16777216
251 0
252 0
253 0
254 0
255 0
das ist jeweils das 16777216fache von den tasächlichen werten (leider stimmt das nicht überall, den bei besonders hohen werten stimts nicht, sonst könnte ichs ja leicht anpassen)
an was liegt das denn? kann mir das jemand erkären?? (bzw lösungsvorschlag) ich hab einfach noch nie mit dem mac was richtiges gemacht (programmiert) und deswegen steh ich da vor einem rätsel
wird wohl irgendwas mit dem integer zu tun haben nur genau was
moe
ich hab schon vor längerem ein winziges programm geschrieben, mit dem man von einem meßprogramm geschriebene daten (binär) in menschlich lesbare (also ascii text) umwandelt (die ersten 1670 zeichen werden weggeschmissen, danach kommen 256 integer werte, die einfach mit nummerierung ausgegeben werden)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE * ein;
int inFileArg=1;
int i,j;
int a[256];
int x;
char b[1670];
if (argc > 2 || argc == 1)
{
printf ("by Moe 2002\n");
printf("usage: programm datei\n");
}
else
{
ein = fopen(argv[inFileArg],"rb");
x=fread(b,sizeof(char), 1670,ein);
x=fread(a,sizeof(int), 256,ein);
for (i=0;i<256;i++)
{
printf("%i %i\n",i,a[i]);
}
fclose(ein);
}
}
unter linux (und windows ebenso), gibt ungefähr soetwas aus...
<snip>
232 0
233 0
234 1
235 0
236 0
237 0
238 0
239 0
240 0
241 0
242 2
243 1
244 1
245 1
246 1
247 0
248 0
249 0
250 1
251 0
252 0
253 0
254 0
255 0
einige meiner freunde haben einen mac und ich dachte kein problem, compilier ich es halt auf dem mac und gut ist. dem ist aber leider nicht so, denn wie man sehen kann kommen einfach die falschen werte dabei raus
<snip>
232 0
233 0
234 16777216
235 0
236 0
237 0
238 0
239 0
240 0
241 0
242 33554432
243 16777216
244 16777216
245 16777216
246 16777216
247 0
248 0
249 0
250 16777216
251 0
252 0
253 0
254 0
255 0
das ist jeweils das 16777216fache von den tasächlichen werten (leider stimmt das nicht überall, den bei besonders hohen werten stimts nicht, sonst könnte ichs ja leicht anpassen)
an was liegt das denn? kann mir das jemand erkären?? (bzw lösungsvorschlag) ich hab einfach noch nie mit dem mac was richtiges gemacht (programmiert) und deswegen steh ich da vor einem rätsel
wird wohl irgendwas mit dem integer zu tun haben nur genau was
moe