我的文件包含以下行:\x8b\xe2=V\xa2\x050\x10\x1f\x11lvCh\x80\xf8z\xf8%\tHKE\xf2\xc8\x92\x12\x83\xe8R\xd3\xc8
我需要将此字符串转换为十六进制代码:0x8be23d56a20530101f116c76436880f87af82509484b45f2c8921283e852d3c8
我试过在python和nodejs中这样做。但是如果我在控制台模式下这样做 - 一切正常,如果我从文件中读取,我的结果是错误的,因为从文件读取为引用的字符串。
答案 0 :(得分:0)
对于python:
import binascii
f = open('path/to/file', 'rb').read()
hex_encoded = binascii.hexlify(f).decode('utf-8')
print(hex_encoded) #Prints hex stream as string
希望有所帮助
答案 1 :(得分:0)
您在控制台应用程序中使用的字符串,当您将其转换为Buffer时,“\”字符不计算在内。请使用双背斜杠。从文件中读取数据时没有问题。
对于NodeJ,将字符串转换为缓冲区并将该缓冲区转换为十六进制值。
fs = require('fs')
fs.readFile('notes.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
const buf = Buffer.from(data, 'ascii');
//converting string into buffer
var hexvalue = buf.toString('hex');
//with buffer, convert it into hex
console.log(hexvalue);
});
对于python,你可以试试这个。
file = open("notes.txt","r")
str = file.readline()
str = str.encode('utf-8')
print (str.hex())