Bladeren bron

2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Rewritten util::toHex().
	* src/util.cc
Tatsuhiro Tsujikawa 15 jaren geleden
bovenliggende
commit
ca54ff894e
2 gewijzigde bestanden met toevoegingen van 20 en 7 verwijderingen
  1. 5 0
      ChangeLog
  2. 15 7
      src/util.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2010-03-05  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Rewritten util::toHex().
+	* src/util.cc
+
 2010-03-05  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Removed SocketBuffer::feedAndSend(). Renamed

+ 15 - 7
src/util.cc

@@ -323,14 +323,22 @@ std::string urldecode(const std::string& target) {
 }
 
 std::string toHex(const unsigned char* src, size_t len) {
-  char* temp = new char[len*2+1];
-  for(size_t i = 0; i < len; ++i) {
-    sprintf(temp+i*2, "%02x", src[i]);
+  std::string out(len*2, '\0');
+  std::string::iterator o = out.begin();
+  const unsigned char* last = src+len;
+  for(const unsigned char* i = src; i != last; ++i) {
+    *o = (*i >> 4);
+    *(o+1) = (*i)&0x0f;
+    for(int j = 0; j < 2; ++j) {
+      if(*o < 10) {
+        *o += '0';
+      } else {
+        *o += 'a'-10;
+      }
+      ++o;
+    }
   }
-  temp[len*2] = '\0';
-  std::string hex = temp;
-  delete [] temp;
-  return hex;
+  return out;
 }
 
 std::string toHex(const char* src, size_t len)