]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/BPDG/GenVpd.py
BaseTools: Handle the bytes and str difference
[mirror_edk2.git] / BaseTools / Source / Python / BPDG / GenVpd.py
index bd2c05d7820e51c9a82be2a1748074607d4927f9..28bfde11513bd3ca5d6f28fca69681cb1506eb11 100644 (file)
@@ -185,7 +185,7 @@ class PcdEntry:
             EdkLogger.error("BPDG", BuildToolError.RESOURCE_OVERFLOW,\r
                             "PCD value string %s is exceed to size %d(File: %s Line: %s)" % (ValueString, Size, self.FileName, self.Lineno))\r
         try:\r
-            self.PcdValue = pack('%ds' % Size, ValueString)\r
+            self.PcdValue = pack('%ds' % Size, bytes(ValueString, 'utf-8'))\r
         except:\r
             EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
                             "Invalid size or value for PCD %s to pack(File: %s Line: %s)." % (self.PcdCName, self.FileName, self.Lineno))\r
@@ -656,7 +656,7 @@ class GenVPD :
             EdkLogger.error("BPDG", BuildToolError.FILE_OPEN_FAILURE, "File open failed for %s" % self.MapFileName, None)\r
 \r
         # Use a instance of BytesIO to cache data\r
-        fStringIO = BytesIO('')\r
+        fStringIO = BytesIO()\r
 \r
         # Write the header of map file.\r
         try :\r
@@ -674,8 +674,7 @@ class GenVPD :
             # Write Vpd binary file\r
             fStringIO.seek (eachPcd.PcdBinOffset)\r
             if isinstance(eachPcd.PcdValue, list):\r
-                ValueList = [chr(Item) for Item in eachPcd.PcdValue]\r
-                fStringIO.write(''.join(ValueList))\r
+                fStringIO.write(bytes(eachPcd.PcdValue))\r
             else:\r
                 fStringIO.write (eachPcd.PcdValue)\r
 \r