• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **********************************************************************
3 *   Copyright (C) 2001-2009, International Business Machines
4 *   Corporation and others.  All Rights Reserved.
5 **********************************************************************
6 *   Date        Name        Description
7 *   05/23/00    aliu        Creation.
8 **********************************************************************
9 */
10 
11 #include "unicode/unistr.h"
12 #include "testutil.h"
13 
14 static const UChar HEX[16]={48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70};
15 
appendHex(UnicodeString & buf,UChar32 ch)16 UnicodeString &TestUtility::appendHex(UnicodeString &buf, UChar32 ch) {
17     if (ch >= 0x10000) {
18         if (ch >= 0x100000) {
19             buf.append(HEX[0xF&(ch>>20)]);
20         }
21         buf.append(HEX[0xF&(ch>>16)]);
22     }
23     buf.append(HEX[0xF&(ch>>12)]);
24     buf.append(HEX[0xF&(ch>>8)]);
25     buf.append(HEX[0xF&(ch>>4)]);
26     buf.append(HEX[0xF&ch]);
27     return buf;
28 }
29 
hex(UChar32 ch)30 UnicodeString TestUtility::hex(UChar32 ch) {
31     UnicodeString buf;
32     appendHex(buf, ch);
33     return buf;
34 }
35 
hex(const UnicodeString & s)36 UnicodeString TestUtility::hex(const UnicodeString& s) {
37     return hex(s, 44 /*,*/);
38 }
39 
hex(const UnicodeString & s,UChar sep)40 UnicodeString TestUtility::hex(const UnicodeString& s, UChar sep) {
41     UnicodeString result;
42     if (s.isEmpty()) return result;
43     UChar32 c;
44     for (int32_t i = 0; i < s.length(); i += U16_LENGTH(c)) {
45         c = s.char32At(i);
46         if (i > 0) {
47             result.append(sep);
48         }
49         appendHex(result, c);
50     }
51     return result;
52 }
53 
hex(const uint8_t * bytes,int32_t len)54 UnicodeString TestUtility::hex(const uint8_t* bytes, int32_t len) {
55 	UnicodeString buf;
56 	for (int32_t i = 0; i < len; ++i) {
57 		buf.append(HEX[0x0F & (bytes[i] >> 4)]);
58 		buf.append(HEX[0x0F & bytes[i]]);
59 	}
60 	return buf;
61 }
62