题目

题目很简单,就是将下面的ascii码转成字符

84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 108, 112, 102, 110, 111, 115, 114, 104, 99, 98, 114, 108

实现

在Python中,有个函数chr()可以将数字转成ascii字符。 代码:

raw = [84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 108, 112, 102, 110, 111, 115, 114, 104, 99, 98, 114, 108]
for i in raw:
    print(chr(i), end="") 

答案

结果就是:*The solution is: lpfnosrhcbrl

所以最后提交lpfnosrhcbrl即可。


其他

上面用的Python3,其实用C,JS,PHP等其他代码都可以实现。

C语言

在C中,可以直接用%c打印数字,编译器自动将数字转换成ascii字符。代码:

#include <stdio.h>
int main(void)
{
    int raw[] = {84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 108, 112, 102, 110, 111, 115, 114, 104, 99, 98, 114, 108};
    for (int i = 0; i < sizeof(raw) / 4; i++)
    {
        printf("%c", raw[i]);
    }
    return 0;
}

JavaScript

在JavaScript中,fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。

var raw = [84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 108, 112, 102, 110, 111, 115, 114, 104, 99, 98, 114, 108]
var text = ''
for (var i in raw) {
    text += String.fromCharCode(raw[i])
}
console.log(text)

PHP

和Python一样,PHP也有个chr()函数,可以将数字转成ascii字符。

<?php
    $raw = [84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 108, 112, 102, 110, 111, 115, 114, 104, 99, 98, 114, 108];
    for ($i = 0; $i < count($raw); $i++) {
        echo(chr($raw[$i]));
    }
?>

Bash

如果是在linux中,可以利用printf \\八进制数来打印字符。 用两个反斜线是为了转义,为的是显示\

#!/bin/bash
 
# 从列表移除逗号
numbers=$(echo "84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 101, 115, 109, 100, 109, 111, 97, 112, 98, 115, 115, 110" | tr -d ,)
 
# 循环每个数
for decimal in $numbers
do
        octal=$(printf "%o" $decimal) # 首先需要将10进制转为8进制 (16进制也可以)
        printf \\$octal # 打印字符
done
printf "\n"