Re: what is wrong in my code?? (python 3.3)

2013-09-30 Thread dream4soul
On Friday, September 27, 2013 7:19:45 PM UTC+3, Denis McMahon wrote:
> On Fri, 27 Sep 2013 06:54:48 -0700, dream4soul wrote:
> 
> 
> 
> > #!c:/Python33/python.exe -u
> 
> > import os, sys 
> 
> > print("Content-type: text/html; charset=utf-8\n\n")
> 
> > print ('Hello, world!')
> 
> > print('ранее предусматривалась смертная казнь.')
> 
> 
> 
> > I see only first print, second it just question marks in my browser(code
> 
> > edited in notepad++ with UTF-8 encode). what is wrong??
> 
> 
> 
> Sounds like your browser is ignoring the charset. Can you force the 
> 
> browser to utf-8?
> 
> 
> 
> What happens if you create a plain html file with the same content and 
> 
> send it to your browser?
> 
> 
> 
> eg: test.html:
> 
> -
> 
> Hello, world!
> 
> ранее предусматривалась смертная казнь.
> 
> -
> 
> 
> 
> This really doesn't look like a python issue (again).
> 
> 
> 
> -- 
> 
> Denis McMahon, denismfmcma...@gmail.com

I rename file from test.py in test.txt and all works fine. So clearly problem 
it is not in file coding or browser. ANY IDEAS??
-- 
https://mail.python.org/mailman/listinfo/python-list


crc algorithm

2014-09-02 Thread dream4soul

Dear all,

I have trouble to implement crc algorithm in python 3.3

c version work  perfect. I try to use bytes, int and c_types without any success
can some who help me:

c version:

unsigned short calc_crc(const void *p_dat, int l_dat){
unsigned char *dat_ptr;
int loopc;
unsigned short crc_dat;
unsigned char c_work;

dat_ptr = (unsigned char*)p_dat;
crc_dat = 0x;
for (; l_dat > 0; l_dat--)
{
c_work = *(dat_ptr++);
for (loopc = 0; loopc < 8; loopc++)
{
if unsigned char )(crc_dat & 0x0001)) ^ (c_work & 
0x01)) == 0x01)
{
crc_dat >>=1 ;
crc_dat ^=0x8408;
} else {
crc_dat >>=1;

}
c_work >>=1;
}
}
return(crc_dat);
}


python tries:

def calc_crc():
crc_dat = c_ushort(0x0001)


data = [0x00,0x00,0x34,0x35,0x38,0x35]
for x in range(len(data)):
pass
c_work = c_ubyte(data[x])
#print(c_work)
for x in range(8):
pass
if (c_ubyte(crc_dat.value & 
c_ushort(0x0001).value).value ^ c_ubyte(c_work.value & 
c_ubyte(0x01).value).value) == c_ubyte(0x01):
crc_dat.value >>=1
crc_dat.value ^=0x8408

else:
crc_dat.value >>=1

c_work.value >>=1
print(crc_dat)

print(crc_dat.value)
pass


-- 
https://mail.python.org/mailman/listinfo/python-list


Re: crc algorithm

2014-09-02 Thread dream4soul
On Tuesday, September 2, 2014 9:24:54 PM UTC+3, Peter Otten wrote:
> dream4s...@gmail.com wrote:
> 
> 
> 
> > I have trouble to implement crc algorithm in python 3.3
> 
> > 
> 
> > c version work  perfect. I try to use bytes, int and c_types without any
> 
> > success can some who help me:
> 
> 
> 
> ctypes is for interfacing with C; don't use it in regular code.
> 
> 
> 
> > c version:
> 
> > 
> 
> > unsigned short calc_crc(const void *p_dat, int l_dat){
> 
> > unsigned char *dat_ptr;
> 
> > int loopc;
> 
> > unsigned short crc_dat;
> 
> > unsigned char c_work;
> 
> > 
> 
> > dat_ptr = (unsigned char*)p_dat;
> 
> > crc_dat = 0x;
> 
> > for (; l_dat > 0; l_dat--)
> 
> > {
> 
> > c_work = *(dat_ptr++);
> 
> > for (loopc = 0; loopc < 8; loopc++)
> 
> > {
> 
> > if unsigned char )(crc_dat & 0x0001)) ^
> 
> > (c_work & 0x01)) == 0x01)
> 
> > {
> 
> > crc_dat >>=1 ;
> 
> > crc_dat ^=0x8408;
> 
> > } else {
> 
> > crc_dat >>=1;
> 
> > 
> 
> > }
> 
> > c_work >>=1;
> 
> > }
> 
> > }
> 
> > return(crc_dat);
> 
> > }
> 
> 
> 
> A near-literal translation would be:
> 
> 
> 
> def calc_crc(data):
> 
> crc = 0
> 
> for work in data:
> 
> for i in range(8):
> 
> if (crc & 1) ^ (work & 1):
> 
> crc >>= 1
> 
> crc ^= 0x8408
> 
> else:
> 
> crc >>= 1
> 
> work >>= 1
> 
> return crc
> 
> 
> 
> I don't see any operation where the "unboundedness" of Python's integer type 
> 
> could be a problem -- but no guarantees.

this doesn't work 

calc_crc(b'\x00\x00\x34\x35\x38\x35')
rsult 0x9f41 , but c function gives us 0x8c40

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: crc algorithm

2014-09-02 Thread dream4soul
On Tuesday, September 2, 2014 9:43:52 PM UTC+3, Chris Kaynor wrote:
> Also, depending on the use-case, binascii.crc32 might also work fine: 
> https://docs.python.org/2/library/binascii.html#binascii.crc32
> 
> 
> 
> 
> import binascii
> def calc_crc(data):
>     return binascii.crc32(data)
> 
> 
> Much simpler.
> 
> 
> 
> 
> Chris
> 
> 
> 
> 
> 
> On Tue, Sep 2, 2014 at 11:24 AM, Peter Otten <__pe...@web.de> wrote:
> 
> 
> 
> dream...@gmail.com wrote:
> 
> 
> 
> > I have trouble to implement crc algorithm in python 3.3
> 
> >
> 
> > c version work  perfect. I try to use bytes, int and c_types without any
> 
> > success can some who help me:
> 
> 
> 
> ctypes is for interfacing with C; don't use it in regular code.
> 
> 
> 
> 
> > c version:
> 
> >
> 
> > unsigned short calc_crc(const void *p_dat, int l_dat){
> 
> >         unsigned char *dat_ptr;
> 
> >         int loopc;
> 
> >         unsigned short crc_dat;
> 
> >         unsigned char c_work;
> 
> >
> 
> >         dat_ptr = (unsigned char*)p_dat;
> 
> >         crc_dat = 0x;
> 
> >         for (; l_dat > 0; l_dat--)
> 
> >         {
> 
> >                 c_work = *(dat_ptr++);
> 
> >                 for (loopc = 0; loopc < 8; loopc++)
> 
> >                 {
> 
> >                         if unsigned char )(crc_dat & 0x0001)) ^
> 
> >                         (c_work & 0x01)) == 0x01)
> 
> >                         {
> 
> >                                 crc_dat >>=1 ;
> 
> >                                 crc_dat ^=0x8408;
> 
> >                         } else {
> 
> >                                 crc_dat >>=1;
> 
> >
> 
> >                         }
> 
> >                         c_work >>=1;
> 
> >                 }
> 
> >         }
> 
> >         return(crc_dat);
> 
> > }
> 
> 
> 
> A near-literal translation would be:
> 
> 
> 
> def calc_crc(data):
> 
>     crc = 0
> 
>     for work in data:
> 
>         for i in range(8):
> 
>             if (crc & 1) ^ (work & 1):
> 
>                 crc >>= 1
> 
>                 crc ^= 0x8408
> 
>             else:
> 
>                 crc >>= 1
> 
>             work >>= 1
> 
>     return crc
> 
> 
> 
> I don't see any operation where the "unboundedness" of Python's integer type
> 
> could be a problem -- but no guarantees.
> 
> 
> 
> --
> 
> https://mail.python.org/mailman/listinfo/python-list

this doesn't work  binascii.crc32(data) return 32 bit data , c function crc 
return 16 bit and it is not standard crc
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: crc algorithm

2014-09-03 Thread dream4soul
On Wednesday, September 3, 2014 10:19:29 AM UTC+3, Peter Otten wrote:
> dream4s...@gmail.com wrote:
> 
> 
> 
> > On Tuesday, September 2, 2014 9:24:54 PM UTC+3, Peter Otten wrote:
> 
> >> dream4s...@gmail.com wrote:
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> > I have trouble to implement crc algorithm in python 3.3
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > c version work  perfect. I try to use bytes, int and c_types without
> 
> >> > any
> 
> >> 
> 
> >> > success can some who help me:
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> ctypes is for interfacing with C; don't use it in regular code.
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> > c version:
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > unsigned short calc_crc(const void *p_dat, int l_dat){
> 
> >> 
> 
> >> > unsigned char *dat_ptr;
> 
> >> 
> 
> >> > int loopc;
> 
> >> 
> 
> >> > unsigned short crc_dat;
> 
> >> 
> 
> >> > unsigned char c_work;
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > dat_ptr = (unsigned char*)p_dat;
> 
> >> 
> 
> >> > crc_dat = 0x;
> 
> >> 
> 
> >> > for (; l_dat > 0; l_dat--)
> 
> >> 
> 
> >> > {
> 
> >> 
> 
> >> > c_work = *(dat_ptr++);
> 
> >> 
> 
> >> > for (loopc = 0; loopc < 8; loopc++)
> 
> >> 
> 
> >> > {
> 
> >> 
> 
> >> > if unsigned char )(crc_dat & 0x0001)) ^
> 
> >> 
> 
> >> > (c_work & 0x01)) == 0x01)
> 
> >> 
> 
> >> > {
> 
> >> 
> 
> >> > crc_dat >>=1 ;
> 
> >> 
> 
> >> > crc_dat ^=0x8408;
> 
> >> 
> 
> >> > } else {
> 
> >> 
> 
> >> > crc_dat >>=1;
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> > c_work >>=1;
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> > return(crc_dat);
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> A near-literal translation would be:
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> def calc_crc(data):
> 
> >> 
> 
> >> crc = 0
> 
> >> 
> 
> >> for work in data:
> 
> >> 
> 
> >> for i in range(8):
> 
> >> 
> 
> >> if (crc & 1) ^ (work & 1):
> 
> >> 
> 
> >> crc >>= 1
> 
> >> 
> 
> >> crc ^= 0x8408
> 
> >> 
> 
> >> else:
> 
> >> 
> 
> >> crc >>= 1
> 
> >> 
> 
> >> work >>= 1
> 
> >> 
> 
> >> return crc
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> I don't see any operation where the "unboundedness" of Python's integer
> 
> >> type
> 
> >> 
> 
> >> could be a problem -- but no guarantees.
> 
> > 
> 
> > this doesn't work
> 
> > 
> 
> > calc_crc(b'\x00\x00\x34\x35\x38\x35')
> 
> > rsult 0x9f41 , but c function gives us 0x8c40
> 
> 
> 
> Are you sure? I get 0x9f41 with the C version you posted:
> 
> 
> 
> $ cat crc.c
> 
> #include 
> 
> 
> 
> unsigned short calc_crc(const void *p_dat, int l_dat){
> 
> unsigned char *dat_ptr;
> 
> int loopc;
> 
> unsigned short crc_dat;
> 
> unsigned char c_work;
> 
> 
> 
> dat_ptr = (unsigned char*)p_dat;
> 
> crc_dat = 0x;
> 
> for (; l_dat > 0; l_dat--)
> 
> {
> 
> c_work = *(dat_ptr++);
> 
> for (loopc = 0; loopc < 8; loopc++)
> 
> {
> 
> if unsigned char )(crc_dat & 0x0001)) ^ (c_work 
> 
> & 0x01)) == 0x01)
> 
> {
> 
> crc_dat >>=1 ;
> 
> crc_dat ^=0x8408;
> 
> } else {
> 
> crc_dat >>=1;
> 
> 
> 
> }
> 
> c_work >>=1;
> 
> }
> 
> }
> 
> return(crc_dat);
> 
> }
> 
> 
> 
> main()
> 
> {
> 
>   unsigned char data[] = "\x00\x00\x34\x35\x38\x35";
> 
>   unsigned short crc = calc_crc(data, 6);
> 
>   printf("%x\n", crc);
> 
> }
> 
> $ gcc crc.c
> 
> $ ./a.out 
> 
> 9f41

int main(int argc, char const *argv[])
{
unsigned short rez;
unsigned char a[]={0x30,0x30,0x34,0x35,0x38,0x35};
  
unsigned short val;
 
rez=calc_crc(a,(int)sizeof(a));
printf("%#hx\n",rez );
 
return 0;
}
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: crc algorithm

2014-09-03 Thread dream4soul
On Wednesday, September 3, 2014 10:19:29 AM UTC+3, Peter Otten wrote:
> dream4s...@gmail.com wrote:
> 
> 
> 
> > On Tuesday, September 2, 2014 9:24:54 PM UTC+3, Peter Otten wrote:
> 
> >> dream4s...@gmail.com wrote:
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> > I have trouble to implement crc algorithm in python 3.3
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > c version work  perfect. I try to use bytes, int and c_types without
> 
> >> > any
> 
> >> 
> 
> >> > success can some who help me:
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> ctypes is for interfacing with C; don't use it in regular code.
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> > c version:
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > unsigned short calc_crc(const void *p_dat, int l_dat){
> 
> >> 
> 
> >> > unsigned char *dat_ptr;
> 
> >> 
> 
> >> > int loopc;
> 
> >> 
> 
> >> > unsigned short crc_dat;
> 
> >> 
> 
> >> > unsigned char c_work;
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > dat_ptr = (unsigned char*)p_dat;
> 
> >> 
> 
> >> > crc_dat = 0x;
> 
> >> 
> 
> >> > for (; l_dat > 0; l_dat--)
> 
> >> 
> 
> >> > {
> 
> >> 
> 
> >> > c_work = *(dat_ptr++);
> 
> >> 
> 
> >> > for (loopc = 0; loopc < 8; loopc++)
> 
> >> 
> 
> >> > {
> 
> >> 
> 
> >> > if unsigned char )(crc_dat & 0x0001)) ^
> 
> >> 
> 
> >> > (c_work & 0x01)) == 0x01)
> 
> >> 
> 
> >> > {
> 
> >> 
> 
> >> > crc_dat >>=1 ;
> 
> >> 
> 
> >> > crc_dat ^=0x8408;
> 
> >> 
> 
> >> > } else {
> 
> >> 
> 
> >> > crc_dat >>=1;
> 
> >> 
> 
> >> > 
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> > c_work >>=1;
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> > return(crc_dat);
> 
> >> 
> 
> >> > }
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> A near-literal translation would be:
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> def calc_crc(data):
> 
> >> 
> 
> >> crc = 0
> 
> >> 
> 
> >> for work in data:
> 
> >> 
> 
> >> for i in range(8):
> 
> >> 
> 
> >> if (crc & 1) ^ (work & 1):
> 
> >> 
> 
> >> crc >>= 1
> 
> >> 
> 
> >> crc ^= 0x8408
> 
> >> 
> 
> >> else:
> 
> >> 
> 
> >> crc >>= 1
> 
> >> 
> 
> >> work >>= 1
> 
> >> 
> 
> >> return crc
> 
> >> 
> 
> >> 
> 
> >> 
> 
> >> I don't see any operation where the "unboundedness" of Python's integer
> 
> >> type
> 
> >> 
> 
> >> could be a problem -- but no guarantees.
> 
> > 
> 
> > this doesn't work
> 
> > 
> 
> > calc_crc(b'\x00\x00\x34\x35\x38\x35')
> 
> > rsult 0x9f41 , but c function gives us 0x8c40
> 
> 
> 
> Are you sure? I get 0x9f41 with the C version you posted:
> 
> 
> 
> $ cat crc.c
> 
> #include 
> 
> 
> 
> unsigned short calc_crc(const void *p_dat, int l_dat){
> 
> unsigned char *dat_ptr;
> 
> int loopc;
> 
> unsigned short crc_dat;
> 
> unsigned char c_work;
> 
> 
> 
> dat_ptr = (unsigned char*)p_dat;
> 
> crc_dat = 0x;
> 
> for (; l_dat > 0; l_dat--)
> 
> {
> 
> c_work = *(dat_ptr++);
> 
> for (loopc = 0; loopc < 8; loopc++)
> 
> {
> 
> if unsigned char )(crc_dat & 0x0001)) ^ (c_work 
> 
> & 0x01)) == 0x01)
> 
> {
> 
> crc_dat >>=1 ;
> 
> crc_dat ^=0x8408;
> 
> } else {
> 
> crc_dat >>=1;
> 
> 
> 
> }
> 
> c_work >>=1;
> 
> }
> 
> }
> 
> return(crc_dat);
> 
> }
> 
> 
> 
> main()
> 
> {
> 
>   unsigned char data[] = "\x00\x00\x34\x35\x38\x35";
> 
>   unsigned short crc = calc_crc(data, 6);
> 
>   printf("%x\n", crc);
> 
> }
> 
> $ gcc crc.c
> 
> $ ./a.out 
> 
> 9f41


int main(int argc, char const *argv[])
{
unsigned short rez;
unsigned char a[]={0x30,0x30,0x34,0x35,0x38,0x35};

unsigned short val;

rez=calc_crc(a,(int)sizeof(a));
printf("%#hx\n",rez );
 
return 0;
}

o$ gcc main.c
o$ ./a.out
0x8c40
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: crc algorithm

2014-09-03 Thread dream4soul
On Wednesday, September 3, 2014 12:00:10 PM UTC+3, Peter Otten wrote:
> dream4s...@gmail.com wrote:
> 
> 
> 
> > calc_crc(b'\x00\x00\x34\x35\x38\x35')
> 
> 
> 
> > unsigned char a[]={0x30,0x30,0x34,0x35,0x38,0x35};
> 
> 
> 
> The first two bytes differ; you made an error on the input.

Dear Peter, my apologies it's my mistake. Thank you for help. Problem solved.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: crc algorithm

2014-09-03 Thread dream4soul
On Wednesday, September 3, 2014 12:00:10 PM UTC+3, Peter Otten wrote:
> dream4s...@gmail.com wrote:
> 
> 
> 
> > calc_crc(b'\x00\x00\x34\x35\x38\x35')
> 
> 
> 
> > unsigned char a[]={0x30,0x30,0x34,0x35,0x38,0x35};
> 
> 
> 
> The first two bytes differ; you made an error on the input.

Dear Peter, my apologies it's my mistake. Thank you for help. Problem solved
-- 
https://mail.python.org/mailman/listinfo/python-list