Blob
1 #include <u.h>2 #include <libc.h>3 #include <bio.h>4 #include <mach.h>6 /*7 * big-endian short8 */9 u16int10 beswap2(u16int s)11 {12 uchar *p;14 p = (uchar*)&s;15 return (p[0]<<8) | p[1];16 }18 /*19 * big-endian long20 */21 u32int22 beswap4(u32int l)23 {24 uchar *p;26 p = (uchar*)&l;27 return (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];28 }30 /*31 * big-endian vlong32 */33 u64int34 beswap8(u64int v)35 {36 uchar *p;38 p = (uchar*)&v;39 return ((u64int)p[0]<<56) | ((u64int)p[1]<<48) | ((u64int)p[2]<<40)40 | ((u64int)p[3]<<32) | ((u64int)p[4]<<24)41 | ((u64int)p[5]<<16) | ((u64int)p[6]<<8)42 | (u64int)p[7];43 }45 /*46 * little-endian short47 */48 u16int49 leswap2(u16int s)50 {51 uchar *p;53 p = (uchar*)&s;54 return (p[1]<<8) | p[0];55 }57 /*58 * little-endian long59 */60 u32int61 leswap4(u32int l)62 {63 uchar *p;65 p = (uchar*)&l;66 return (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0];67 }69 /*70 * little-endian vlong71 */72 u64int73 leswap8(u64int v)74 {75 uchar *p;77 p = (uchar*)&v;78 return ((u64int)p[7]<<56) | ((u64int)p[6]<<48) | ((u64int)p[5]<<40)79 | ((u64int)p[4]<<32) | ((u64int)p[3]<<24)80 | ((u64int)p[2]<<16) | ((u64int)p[1]<<8)81 | (u64int)p[0];82 }84 u16int85 leload2(uchar *b)86 {87 return b[0] | (b[1]<<8);88 }90 u32int91 leload4(uchar *b)92 {93 return b[0] | (b[1]<<8) | (b[2]<<16) | (b[3]<<24);94 }96 u64int97 leload8(uchar *b)98 {99 return leload4(b) | ((uvlong)leload4(b+4) << 32);100 }102 u16int103 beload2(uchar *b)104 {105 return (b[0]<<8) | b[1];106 }108 u32int109 beload4(uchar *b)110 {111 return (b[0]<<24) | (b[1]<<16) | (b[2]<<8) | b[3];112 }114 u64int115 beload8(uchar *b)116 {117 return ((uvlong)beload4(b) << 32) | beload4(b+4);118 }