如何用r将十六进制数据转换为实数



我很期待把一些数据转换成实数的方法

下面是一个数据

的例子
0400 0000 cf40 2761 d2ff 5552 ceff 5652
e0ff 5b52 e0ff 5b52 eaff 5f52 f4ff 5b52
eaff 5852 eeff 5752 f2ff 5952 eeff 5a52
d8ff 5452 d4ff 5652 caff 5452 ccff 5352
d2ff 5552 c2ff 5a52 ccff 5e52 e2ff 5652
eaff 5852 f0ff 5652 e8ff 5452 e8ff 5452
eaff 5552 deff 5a52 f0ff 5f52 faff 5b52
0a00 6152 0400 6352 f8ff 5f52 0000 5c52
f8ff 5952 0200 5452 0000 5452 f2ff 5952
f8ff 5a52 0400 5652 0400 5652 f2ff 5c52

经过一些调查,我发现似乎十六进制数据文件(或原始二进制格式)我尝试了许多方法,如十六进制编辑器和R和python的其他功能,但它不适合我

如果你对这些数据有任何想法,请告诉我!非常感谢!

您可以使用简单的python函数。我已经将Hexa存储在一个变量中。然后,您可以使用split函数在列表中转换十六进制,如下所示。要传输以数字表示的Hexa列表,请使用带有for循环的print函数。

1. For i.e. hex_string = "your hexa data" 
2. For i.e. ist = (hex_string.split(" "))

查看下面的完整代码。

hex_string = "0400 0000 cf40 2761 d2ff 5552 ceff 5652 e0ff 5b52 e0ff 5b52 
eaff 5f52 f4ff 5b52 eaff 5852 eeff 5752 f2ff 5952 eeff 5a52 d8ff 5452 
d4ff 5652 caff 5452 ccff 5352 d2ff 5552 c2ff 5a52 ccff 5e52 e2ff 5652 
eaff 5852 f0ff 5652 e8ff 5452 e8ff 5452 eaff 5552 deff 5a52 f0ff 5f52 
faff 5b52 0a00 6152 0400 6352 f8ff 5f52 0000 5c52 f8ff 5952 0200 5452 
0000 5452 f2ff 5952 f8ff 5a52 0400 5652 0400 5652 f2ff 5c52"
list = (hex_string.split(" "))
for i in list:
print(int(i,16))

R中,broman::hex2dec函数将十六进制转换为十进制。

install.packages("broman")
library(broman)
dummy <- read.table(text = "0400 0000 cf40 2761 d2ff 5552 ceff 5652
e0ff 5b52 e0ff 5b52 eaff 5f52 f4ff 5b52
eaff 5852 eeff 5752 f2ff 5952 eeff 5a52
d8ff 5452 d4ff 5652 caff 5452 ccff 5352
d2ff 5552 c2ff 5a52 ccff 5e52 e2ff 5652
eaff 5852 f0ff 5652 e8ff 5452 e8ff 5452
eaff 5552 deff 5a52 f0ff 5f52 faff 5b52
0a00 6152 0400 6352 f8ff 5f52 0000 5c52
f8ff 5952 0200 5452 0000 5452 f2ff 5952
f8ff 5a52 0400 5652 0400 5652 f2ff 5c52", header = F)
apply(dummy, 2, hex2dec)
V1    V2    V3    V4    V5    V6    V7    V8
[1,]  1024     0 53056 10081 54015 21842 52991 22098
[2,] 57599 23378 57599 23378 60159 24402 62719 23378
[3,] 60159 22610 61183 22354 62207 22866 61183 23122
[4,] 55551 21586 54527 22098 51967 21586 52479 21330
[5,] 54015 21842 49919 23122 52479 24146 58111 22098
[6,] 60159 22610 61695 22098 59647 21586 59647 21586
[7,] 60159 21842 57087 23122 61695 24402 64255 23378
[8,]  2560 24914  1024 25426 63743 24402     0 23634
[9,] 63743 22866   512 21586     0 21586 62207 22866
[10,] 63743 23122  1024 22098  1024 22098 62207 23634

python中

data = [['0400', '0000', 'cf40', '2761', 'd2ff', '5552', 'ceff', '5652'],
['e0ff', '5b52', 'e0ff', '5b52', 'eaff', '5f52', 'f4ff', '5b52'],
['eaff', '5852', 'eeff', '5752', 'f2ff', '5952', 'eeff', '5a52'],
['d8ff', '5452', 'd4ff', '5652', 'caff', '5452', 'ccff', '5352'],
['d2ff', '5552', 'c2ff', '5a52', 'ccff', '5e52', 'e2ff', '5652'],
['eaff', '5852', 'f0ff', '5652', 'e8ff', '5452', 'e8ff', '5452'],
['eaff', '5552', 'deff', '5a52', 'f0ff', '5f52', 'faff', '5b52'],
['0a00', '6152', '0400', '6352', 'f8ff', '5f52', '0000', '5c52'],
['f8ff', '5952', '0200', '5452', '0000', '5452', 'f2ff', '5952'],
['f8ff', '5a52', '0400', '5652', '0400', '5652', 'f2ff', '5c52']]
for row in data:
for value in row:
value = int(value, 16)
print(data)

基本上,我不知道你是否希望它像那样呈现,所以我做了一个"矩阵"(如果你想要实际的术语,它是列表的列表,但它基本上只是一个矩阵)你的值。然后使用int()函数将其转换为十进制。

编辑:决定让它看起来更漂亮一点

data = [['0400', '0000', 'cf40', '2761', 'd2ff', '5552', 'ceff', '5652'],
['e0ff', '5b52', 'e0ff', '5b52', 'eaff', '5f52', 'f4ff', '5b52'],
['eaff', '5852', 'eeff', '5752', 'f2ff', '5952', 'eeff', '5a52'],
['d8ff', '5452', 'd4ff', '5652', 'caff', '5452', 'ccff', '5352'],
['d2ff', '5552', 'c2ff', '5a52', 'ccff', '5e52', 'e2ff', '5652'],
['eaff', '5852', 'f0ff', '5652', 'e8ff', '5452', 'e8ff', '5452'],
['eaff', '5552', 'deff', '5a52', 'f0ff', '5f52', 'faff', '5b52'],
['0a00', '6152', '0400', '6352', 'f8ff', '5f52', '0000', '5c52'],
['f8ff', '5952', '0200', '5452', '0000', '5452', 'f2ff', '5952'],
['f8ff', '5a52', '0400', '5652', '0400', '5652', 'f2ff', '5c52']]
for row in data:
string = ''
for value in row:
value = int(value, 16)
string = string + str(value) + ' '*(10-len(str(value)))
print(string)

输出:

1024      0         53056     10081     54015     21842     52991     22098
57599     23378     57599     23378     60159     24402     62719     23378
60159     22610     61183     22354     62207     22866     61183     23122
55551     21586     54527     22098     51967     21586     52479     21330
54015     21842     49919     23122     52479     24146     58111     22098
60159     22610     61695     22098     59647     21586     59647     21586
60159     21842     57087     23122     61695     24402     64255     23378
2560      24914     1024      25426     63743     24402     0         23634
63743     22866     512       21586     0         21586     62207     22866
63743     23122     1024      22098     1024      22098     62207     23634

相关内容

  • 没有找到相关文章

最新更新