查找字符串的编码方法



我正在处理一个xml文件,其中数字用不同的方法编码。标题写着"xml版本="1.0"编码="utf-8",但我发现不仅使用utf8。下面的字符串我相信使用了相同的编码方法。但是我不知道使用的方法。请注意以下字符串是括号内相应的小数和单位。字符串可以包含,也可以不包含。

40413CA4FCA42AED  5.000 (ksi)
40A2C00000000000  0.15 (kcf)  
40A2200000000000  0.145 (kcf)
40DB627A7915AB7E  4067.135889 (ksi)
3FC999999999999A  0.2 (no unit)
400D99D5D4C224D1  0.5366563 (ksi)

下面的是我用来解释这些字符串的python代码。6个弦中,我选对了一个0.2

import struct
# define double_to_hex (or float_to_hex)
def double_to_hex(f):
return hex(struct.unpack('<Q', struct.pack('<d', f))[0])
print(double_to_hex(0.5366563))

有什么建议吗?

我猜是单位不匹配。

import struct
import pandas as pd
import io   
mydata = '''hxstr decval unit
40413CA4FCA42AED 5.000 (ksi)
40A2C00000000000 0.15 (kcf)
40A2200000000000 0.145 (kcf)
40DB627A7915AB7E 4067.135889 (ksi)
3FC999999999999A 0.2 (nou)
400D99D5D4C224D1 0.5366563 (ksi)
'''
df = pd.read_csv( io.StringIO(mydata), sep=" ")
for index, row in df.iterrows():
print( 
row.hxstr,
row.unit,
struct.unpack(
'>d',
bytes.fromhex(row.hxstr))[0] / float(row.decval)) 

结果对于相同的单位显示大致相同的比率:

40413CA4FCA42AED (ksi) 6.894757
40A2C00000000000 (kcf) 16000.0
40A2200000000000 (kcf) 16000.000000000002
40DB627A7915AB7E (ksi) 6.89475699994749
3FC999999999999A (nou) 1.0
400D99D5D4C224D1 (ksi) 6.894757187574625

这里

ksi
  • 6.894757比率类似于以下转换(假设ksi表示千磅每平方英寸): 1 ksi = 6.8947572932 MPa(兆帕斯卡),
  • 没有单元1.0比值似乎是正确的,但是
  • kcf的16000.0比率I can't identify…

最新更新