将脚本从C迁移到PHP

时间:2012-08-20 10:08:04

标签: php c

我正在将脚本从C迁移到PHP(http://svn.stellman-greene.com/mgrs_to_utm/trunk/),我在mgrs_to_utm.c中遇到了这个概念的问题:

Letters[0] = (toupper(MGRS[j]) - (long)'A');
if ((Letters[0] == LETTER_I) || (Letters[0] == LETTER_O))

MGRS[j]是字符串的一部分,但WTF我可以将(long)'A'减去LETTER ??

LETTER_I是一个整数(在mgrs_to_utm.h中定义)。

我记得PHP,我找不到这个操作的逻辑。

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

在ASCII中,字符“A”的值为65,因此Letters [0]实际上包含字母表中的偏移量(A为0)。

如果MGRS [j]是'I'(73)那么我们从它拿'A'(65)离开8

A B C D E F G H I J K...
0 1 2 3 4 5 6 7 8 9 10

代码几乎与:

if ( MGRS[j] == 'I' || MGRS[j] == 'O' || MGRS[j] == 'i' || MGRS[j] == 'o')