1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru********************************************************************** 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* Copyright (C) 2001-2009, International Business Machines 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru********************************************************************** 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 05/23/00 aliu Creation. 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru********************************************************************** 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unistr.h" 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "testutil.h" 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar HEX[16]={48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70}; 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoUnicodeString &TestUtility::appendHex(UnicodeString &buf, UChar32 ch) { 1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (ch >= 0x10000) { 1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (ch >= 0x100000) { 1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.append(HEX[0xF&(ch>>20)]); 2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.append(HEX[0xF&(ch>>16)]); 2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.append(HEX[0xF&(ch>>12)]); 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.append(HEX[0xF&(ch>>8)]); 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.append(HEX[0xF&(ch>>4)]); 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.append(HEX[0xF&ch]); 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return buf; 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoUnicodeString TestUtility::hex(UChar32 ch) { 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString buf; 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho appendHex(buf, ch); 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return buf; 3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString TestUtility::hex(const UnicodeString& s) { 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return hex(s, 44 /*,*/); 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString TestUtility::hex(const UnicodeString& s, UChar sep) { 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString result; 4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (s.isEmpty()) return result; 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar32 c; 4450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho for (int32_t i = 0; i < s.length(); i += U16_LENGTH(c)) { 4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho c = s.char32At(i); 4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (i > 0) { 4750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result.append(sep); 4850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 4950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho appendHex(result, c); 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result; 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 5350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoUnicodeString TestUtility::hex(const uint8_t* bytes, int32_t len) { 5550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString buf; 5650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho for (int32_t i = 0; i < len; ++i) { 5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.append(HEX[0x0F & (bytes[i] >> 4)]); 5850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.append(HEX[0x0F & bytes[i]]); 5950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 6050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return buf; 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 62