diff --git a/core/kamon-core-tests/src/test/scala/kamon/trace/DataDogSpanPropagationSpec.scala b/core/kamon-core-tests/src/test/scala/kamon/trace/DataDogSpanPropagationSpec.scala
index 8a22c1fd5..3cfb1682f 100644
--- a/core/kamon-core-tests/src/test/scala/kamon/trace/DataDogSpanPropagationSpec.scala
+++ b/core/kamon-core-tests/src/test/scala/kamon/trace/DataDogSpanPropagationSpec.scala
@@ -118,6 +118,28 @@ class DataDogSpanPropagationSpec extends AnyWordSpec with Matchers with OptionVa
     }
   }
 
+
+  "SpanPropagation.DataDog.decodeUnsignedLongToHex" should {
+    "decode unsigned long to expected hex value " in {
+        val expectedHex1 = "0";
+        val actualHex1 = SpanPropagation.DataDog.decodeUnsignedLongToHex("0");
+        expectedHex1 shouldBe actualHex1;
+
+        val expectedHex2 = "ff";
+        val actualHex2 = SpanPropagation.DataDog.decodeUnsignedLongToHex("255");
+        expectedHex2 shouldBe actualHex2;
+
+        val expectedHex3 = "c5863f7d672b65bf";
+        val actualHex3 = SpanPropagation.DataDog.decodeUnsignedLongToHex("14233133480185390527");
+        expectedHex3 shouldBe actualHex3;
+
+        val expectedHex4 = "ffffffffffffffff";
+        val actualHex4 = SpanPropagation.DataDog.decodeUnsignedLongToHex("18446744073709551615");
+        expectedHex4 shouldBe actualHex4;
+
+    }
+  }
+
   def unsignedLongString(id: String): String = BigInt(id, 16).toString
 
   def headerReaderFromMap(map: Map[String, String]): HttpPropagation.HeaderReader = new HttpPropagation.HeaderReader {
diff --git a/core/kamon-core/src/main/scala/kamon/trace/SpanPropagation.scala b/core/kamon-core/src/main/scala/kamon/trace/SpanPropagation.scala
index 0133bc199..77034f739 100644
--- a/core/kamon-core/src/main/scala/kamon/trace/SpanPropagation.scala
+++ b/core/kamon-core/src/main/scala/kamon/trace/SpanPropagation.scala
@@ -24,6 +24,7 @@ import kamon.context.HttpPropagation.{HeaderReader, HeaderWriter}
 import kamon.context.generated.binary.span.{Span => ColferSpan}
 import kamon.context.{Context, _}
 import kamon.trace.Trace.SamplingDecision
+import java.lang.{Long => JLong}
 
 import scala.util.Try
 
@@ -450,7 +451,7 @@ object W3CTraceContext {
       * https://docs.datadoghq.com/tracing/guide/send_traces_to_agent_by_api/
       */
     def decodeUnsignedLongToHex(id: String): String =
-      urlDecode(id).toLong.toHexString
+      JLong.parseUnsignedLong(urlDecode(id), 10).toHexString
   }
 
   class DataDog extends Propagation.EntryReader[HeaderReader] with Propagation.EntryWriter[HeaderWriter] {