|  | /* | 
|  | ********************************************************************** | 
|  | *   Copyright (C) 2001-2009, International Business Machines | 
|  | *   Corporation and others.  All Rights Reserved. | 
|  | ********************************************************************** | 
|  | *   Date        Name        Description | 
|  | *   05/23/00    aliu        Creation. | 
|  | ********************************************************************** | 
|  | */ | 
|  |  | 
|  | #include "unicode/unistr.h" | 
|  | #include "testutil.h" | 
|  |  | 
|  | static const UChar HEX[16]={48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70}; | 
|  |  | 
|  | UnicodeString &TestUtility::appendHex(UnicodeString &buf, UChar32 ch) { | 
|  | if (ch >= 0x10000) { | 
|  | if (ch >= 0x100000) { | 
|  | buf.append(HEX[0xF&(ch>>20)]); | 
|  | } | 
|  | buf.append(HEX[0xF&(ch>>16)]); | 
|  | } | 
|  | buf.append(HEX[0xF&(ch>>12)]); | 
|  | buf.append(HEX[0xF&(ch>>8)]); | 
|  | buf.append(HEX[0xF&(ch>>4)]); | 
|  | buf.append(HEX[0xF&ch]); | 
|  | return buf; | 
|  | } | 
|  |  | 
|  | UnicodeString TestUtility::hex(UChar32 ch) { | 
|  | UnicodeString buf; | 
|  | appendHex(buf, ch); | 
|  | return buf; | 
|  | } | 
|  |  | 
|  | UnicodeString TestUtility::hex(const UnicodeString& s) { | 
|  | return hex(s, 44 /*,*/); | 
|  | } | 
|  |  | 
|  | UnicodeString TestUtility::hex(const UnicodeString& s, UChar sep) { | 
|  | UnicodeString result; | 
|  | if (s.isEmpty()) return result; | 
|  | UChar32 c; | 
|  | for (int32_t i = 0; i < s.length(); i += U16_LENGTH(c)) { | 
|  | c = s.char32At(i); | 
|  | if (i > 0) { | 
|  | result.append(sep); | 
|  | } | 
|  | appendHex(result, c); | 
|  | } | 
|  | return result; | 
|  | } | 
|  |  | 
|  | UnicodeString TestUtility::hex(const uint8_t* bytes, int32_t len) { | 
|  | UnicodeString buf; | 
|  | for (int32_t i = 0; i < len; ++i) { | 
|  | buf.append(HEX[0x0F & (bytes[i] >> 4)]); | 
|  | buf.append(HEX[0x0F & bytes[i]]); | 
|  | } | 
|  | return buf; | 
|  | } |