将字符串转换为 ascii 值

将字符串转换为 ascii 值

我一直在互联网上搜索如何做到这一点,但没有找到实际的方法。

基本上,我有一系列大型数据框,我希望将所有这些数据集中的列向量之一从字符串(例如:ASDFSDFSAFDSA)转换为其 ASCII 格式的等效值。我想在 bash 中执行此操作,因为它们太大而无法在 R 中处理。

我知道在 java 和 R 中有一些函数可以做到这一点,但在 bash 中找不到它的等效函数。我查看了该xxd函数以及论坛上的一些帖子,但它们最终只给了我几个整数,而不是正确的 ASCII 格式。

以下是dput一小段数据的输出:

structure(list(Clone.ID = 0:5, Clone.count = c(2454L, 1915L, 
1369L, 1255L, 1152L, 1099L), AA..Seq..CDR3 = c("CASSNSDRTYGDNEQFF", 
"CATSSVLTQQETQYF", "CASSSRGLANTQYF", "CASSLGTALNTEAFF", "CASSRRHLGNTGELFF", 
"CASSEGRSNQPQHF")), row.names = c(NA, 6L), class = "data.frame")

上传的数据如下所示:

    Clone.ID Clone.count   AA..Seq..CDR3
1        0        2454 CASSNSDRTYGDNEQFF
2        1        1915   CATSSVLTQQETQYF
3        2        1369    CASSSRGLANTQYF
4        3        1255   CASSLGTALNTEAFF
5        4        1152  CASSRRHLGNTGELFF
6        5        1099    CASSEGRSNQPQHF

期望的输出是colAA..Seq.CDR3 具有以下条目:

067 065 083 083 078 083 068 082 084 089 071 068 078 069 081 070 070
067 065 084 083 083 086 076 084 081 081 069 084 081 089 070
067 065 083 083 083 082 071 076 065 078 084 081 089 070 #and so on...

此外,如果 ascii 表示形式是一个整数而不是整数数组,就像 R 转换的输出一样,那就太理想了 - 我相信 Python 也是如此。

任何帮助将非常感激。

感谢大家的时间,

答案1

你可以在 Perl 中做一些快速而又肮脏的事情:

$ perl -alne 'print join " ", map { ord $_ } split //, $F[3] if $. > 1' datafile
67 65 83 83 78 83 68 82 84 89 71 68 78 69 81 70 70
67 65 84 83 83 86 76 84 81 81 69 84 81 89 70
67 65 83 83 83 82 71 76 65 78 84 81 89 70
67 65 83 83 76 71 84 65 76 78 84 69 65 70 70
67 65 83 83 82 82 72 76 71 78 84 71 69 76 70 70
67 65 83 83 69 71 82 83 78 81 80 81 72 70

但是如果你已经在处理数据R,那么你应该考虑使用其原生数据utf8ToInt,如下所述R:如何将字符转换为ASCII码?

答案2

嗯...我可以问一下吗为什么你想这样做吗?我个人可能会反过来做,因为我更熟悉字母而不是十进制代码。

但是,让我们重新表述你的问题 cl 以更精确地定义目标: - 你在表中有一个ASCII 字符列在 AZ 范围内(或者也是小写?)- 您希望每个字符都与其对应的十进制 cvalue 超过一个空格和 3 位数字

Bash 具有强大的字符串/字符替换功能,例如

zz=CABXAB;回显 ${zz//A/' 065'}

相关内容