1 #include <lib9.h> 2 3 /* 4 * big-endian short 5 */ 6 ushort 7 beswab(ushort s) 8 { 9 uchar *p; 10 11 p = (uchar*)&s; 12 return (p[0]<<8) | p[1]; 13 } 14 15 /* 16 * big-endian long 17 */ 18 long 19 beswal(long l) 20 { 21 uchar *p; 22 23 p = (uchar*)&l; 24 return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3]; 25 } 26 27 /* 28 * big-endian vlong 29 */ 30 vlong 31 beswav(vlong v) 32 { 33 uchar *p; 34 35 p = (uchar*)&v; 36 return ((vlong)p[0]<<56) | ((vlong)p[1]<<48) | ((vlong)p[2]<<40) 37 | ((vlong)p[3]<<32) | ((vlong)p[4]<<24) 38 | ((vlong)p[5]<<16) | ((vlong)p[6]<<8) 39 | (vlong)p[7]; 40 } 41 42 /* 43 * little-endian short 44 */ 45 ushort 46 leswab(ushort s) 47 { 48 uchar *p; 49 50 p = (uchar*)&s; 51 return (p[1]<<8) | p[0]; 52 } 53 54 /* 55 * little-endian long 56 */ 57 long 58 leswal(long l) 59 { 60 uchar *p; 61 62 p = (uchar*)&l; 63 return (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0]; 64 } 65 66 /* 67 * little-endian vlong 68 */ 69 vlong 70 leswav(vlong v) 71 { 72 uchar *p; 73 74 p = (uchar*)&v; 75 return ((vlong)p[7]<<56) | ((vlong)p[6]<<48) | ((vlong)p[5]<<40) 76 | ((vlong)p[4]<<32) | ((vlong)p[3]<<24) 77 | ((vlong)p[2]<<16) | ((vlong)p[1]<<8) 78 | (vlong)p[0]; 79 } 80