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