/* ********************************************************************** * 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; }