oem-ibm: Hex value support for the PCIe config space data

This commit sets the PCIE config space data sent from
host with a prefix '0x' and the hex value. This change
was needed as the Redfish validator [1] expects the fields
to be in a particular Regex form otherwise it fails to
validate.

Tested: Ran a Redfish Validator against the changes.
Result:
Before this change:
ERROR - VendorId: String '5348' does not match
pattern ''^0[xX](([a-fA-F]|[0-9]){2}){2}$''
ERROR - DeviceId: String '5719' does not match
pattern ''^0[xX](([a-fA-F]|[0-9]){2}){2}$''
.....

After this change : Successfully passed

[1] https://www.dmtf.org/sites/default/files/standards/documents/
DSP0268_2022.2.pdf

Change-Id: I2b1d34532e94b84b34577cb2d1d7f5b955633bf6
Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
diff --git a/oem/ibm/libpldmresponder/fru_oem_ibm.cpp b/oem/ibm/libpldmresponder/fru_oem_ibm.cpp
index 2ff9a5a..c9360df 100644
--- a/oem/ibm/libpldmresponder/fru_oem_ibm.cpp
+++ b/oem/ibm/libpldmresponder/fru_oem_ibm.cpp
@@ -3,6 +3,7 @@
 #include <com/ibm/VPD/Manager/client.hpp>
 #include <phosphor-logging/lg2.hpp>
 
+#include <format>
 #include <ranges>
 
 PHOSPHOR_LOG2_USING;
@@ -60,22 +61,24 @@
                 {
                     return PLDM_ERROR_INVALID_DATA;
                 }
-                auto vendorId = std::to_string(htole16(pcieData->vendorId));
-                auto deviceId = std::to_string(htole16(pcieData->deviceId));
-                auto revisionId = std::to_string(pcieData->revisionId);
 
-                std::stringstream ss;
+                auto vendorId = std::format("0x{:04x}",
+                                            htole16(pcieData->vendorId));
+                auto deviceId = std::format("0x{:04x}",
+                                            htole16(pcieData->deviceId));
+                auto revisionId = std::format("0x{:02x}",
+                                              htole16(pcieData->revisionId));
 
+                std::string classCode = "0x";
                 for (const auto& ele : pcieData->classCode)
                 {
-                    ss << std::setfill('0') << std::setw(2) << std::hex << ele;
+                    classCode += std::format("{:02x}", ele);
                 }
-                std::string classCode = ss.str();
 
-                auto subSystemVendorId =
-                    std::to_string(htole16(pcieData->subSystemVendorId));
-                auto subSystemId =
-                    std::to_string(htole16(pcieData->subSystemId));
+                auto subSystemVendorId = std::format(
+                    "0x{:04x}", htole16(pcieData->subSystemVendorId));
+                auto subSystemId = std::format("0x{:04x}",
+                                               htole16(pcieData->subSystemId));
 
                 updateDBusProperty(fruRSI, entityAssociationMap, vendorId,
                                    deviceId, revisionId, classCode,