diff options
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -53,8 +53,11 @@ hexdump (FILE * f, uint8_t * data, int s, int l) } void -utf16_to_ascii (uint16_t * u16, int u16_len, uint8_t * u8, int u8_len) +utf16_to_ascii (void * _u16, int u16_len, void * _u8, int u8_len) { + uint16_t *u16=(uint16_t *) _u16; + uint8_t *u8=(uint8_t *) _u8; + u16_len >>= 1; if (u8_len == 1) @@ -78,3 +81,37 @@ utf16_to_ascii (uint16_t * u16, int u16_len, uint8_t * u8, int u8_len) *u8 = 0; return; } + +void +ascii_to_utf16 (void * _u8, int u8_len, void * _u16, int u16_len) +{ + uint16_t *u16=(uint16_t *) _u16; + uint8_t *u8=(uint8_t *) _u8; + + u16_len >>= 1; + + if (u16_len == 1) + { + *u16 = 0; + return; + } + while (*u8 && u8_len) + { + *(u16++) = *(u8++); + u16_len--; + u8_len--; + + if (u16_len == 1) + { + *u16 = 0; + return; + } + } + + *u16 = 0; + return; +} + + + + |