Как преобразовать некоторый символ в числовой в php?
Мне нужна помощь, чтобы изменить символ в php. У меня есть код из Интернета:
char dest='a'; int conv=(int)dest;
Могу ли я использовать этот код для преобразования символа в числовой? Или у вас есть идеи? Я просто хочу показать результат как десятичное число:
Используйте ord (), чтобы вернуть значение ascii. Вычитайте 96, чтобы вернуть число, где a = 1, b = 2 ….
Буквы верхнего и нижнего регистра имеют разные значения ASCII, поэтому, если вы хотите обрабатывать их одинаково, вы можете использовать strtolower () для преобразования верхнего регистра в нижний регистр.
Чтобы обрабатывать случай NULL , просто используйте if($dest) . Это будет верно, если $dest – это нечто иное, чем NULL или 0 .
PHP – это свободно типизированный язык, поэтому нет необходимости объявлять типы. Итак, char dest=’a’; это неверно. Переменные имеют $ префикс в PHP и не объявляют тип, поэтому он должен быть $dest = ‘a’; ,
Живой пример
// Let's test the function. echo toNumber(NULL) . " "; echo toNumber('a') . " "; echo toNumber('B') . " "; echo toNumber('c'); // Output is: // 0 1 2 3 ?>
PS: Здесь вы можете посмотреть значения ASCII .
Он действительно работает так же, как в примере, за исключением того, что вы должны использовать синтаксис php (и в качестве побочного элемента: язык, который, по вашему мнению, был наиболее вероятным, он не делал то же самое).
Впоследствии будет выполнено следующее:
На это очень сложно ответить, потому что это не вопрос, а просто немного.
Но если вы спросите.
Кажется, вам нужна таблица переводов, которая определяет ссылки между буквами и номерами
или что-то еще.
Вы можете достичь этого, используя массив, в котором будут указаны эти буквы и значения – нужные числа.
$defects_arr = array( 'A' -> 2, 'B' -> 3, 'C' -> 4' 'S' -> 1 >;
Таким образом, вы можете преобразовать эти буквы в числа
$letter = 'A'; $number = $defects_arr($letter); echo $number; // outputs 1
Но это все еще не то, что вы хотите.
Имеют ли эти типы дефектов какие-либо подробные эквиваленты? Если да, почему бы не использовать их вместо букв?
Рассказывать всю историю, а не немного, поможет вам избежать ошибок и сэкономить массу времени, как ваших, так и тех, кто будет отвечать.
Итак, если вам нужен код ASCII, вам нужно будет:
Если вы хотите что-то вроде:
Числовое значение символа php
ord — Convert the first byte of a string to a value between 0 and 255
Description
Interprets the binary value of the first byte of character as an unsigned integer between 0 and 255.
If the string is in a single-byte encoding, such as ASCII, ISO-8859, or Windows 1252, this is equivalent to returning the position of a character in the character set’s mapping table. However, note that this function is not aware of any string encoding, and in particular will never identify a Unicode code point in a multi-byte encoding such as UTF-8 or UTF-16.
This function complements chr() .
Parameters
Return Values
An integer between 0 and 255.
Examples
Example #1 ord() example
Example #2 Examining the individual bytes of a UTF-8 string
declare( encoding = ‘UTF-8’ );
$str = «🐘» ;
for ( $pos = 0 ; $pos < strlen ( $str ); $pos ++ ) $byte = substr ( $str , $pos );
echo ‘Byte ‘ . $pos . ‘ of $str has value ‘ . ord ( $byte ) . PHP_EOL ;
>
?>?php
The above example will output:
Byte 0 of $str has value 240
Byte 1 of $str has value 159
Byte 2 of $str has value 144
Byte 3 of $str has value 152
See Also
- chr() — Generate a single-byte string from a number
- An » ASCII-table
- mb_ord() — Get Unicode code point of character
- IntlChar::ord() — Return Unicode code point value of character
User Contributed Notes 6 notes
As ord() doesn’t work with utf-8, and if you do not have access to mb_* functions, the following function will work well:
function ordutf8 ( $string , & $offset ) $code = ord ( substr ( $string , $offset , 1 ));
if ( $code >= 128 ) < //otherwise 0xxxxxxx
if ( $code < 224 ) $bytesnumber = 2 ; //110xxxxx
else if ( $code < 240 ) $bytesnumber = 3 ; //1110xxxx
else if ( $code < 248 ) $bytesnumber = 4 ; //11110xxx
$codetemp = $code — 192 — ( $bytesnumber > 2 ? 32 : 0 ) — ( $bytesnumber > 3 ? 16 : 0 );
for ( $i = 2 ; $i <= $bytesnumber ; $i ++) $offset ++;
$code2 = ord ( substr ( $string , $offset , 1 )) — 128 ; //10xxxxxx
$codetemp = $codetemp * 64 + $code2 ;
>
$code = $codetemp ;
>
$offset += 1 ;
if ( $offset >= strlen ( $string )) $offset = — 1 ;
return $code ;
>
?>
$offset is a reference, as it is not easy to split a utf-8 char-by-char. Useful to iterate on a string:
$text = «abcàê߀abc» ;
$offset = 0 ;
while ( $offset >= 0 ) echo $offset . «: » . ordutf8 ( $text , $offset ). «\n» ;
>
/* returns:
0: 97
1: 98
2: 99
3: 224
5: 234
7: 223
9: 8364
12: 97
13: 98
14: 99
*/
?>
Feel free to adapt my code to fit your needs.
Regarding character sets, and whether or not this is «ASCII». Firstly, there is no such thing as «8-bit ASCII», so if it were ASCII it would only ever return integers up to 127. 8-bit ASCII-compatible encodings include the ISO 8859 family of encodings, which map various common characters to the values from 128 to 255. UTF-8 is also designed so that characters representable in 7-bit ASCII are coded the same; byte values higher than 127 in a UTF-8 string represent the beginning of a multi-byte character.
In fact, like most of PHP’s string functions, this function isn’t doing anything to do with character encoding at all — it is just interpreting a binary byte from a string as an unsigned integer. That is, ord(chr(200)) will always return 200, but what character chr(200) *means* will vary depending on what character encoding it is *interpreted* as part of (e.g. during display).
A technically correct description would be «Returns an integer representation of the first byte of a string, from 0 to 255. For single-byte encodings such as (7-bit) ASCII and the ISO 8859 family, this will correspond to the first character, and will be the position of that character in the encoding’s mapping table. For multi-byte encodings, such as UTF-8 or UTF-16, the byte may not represent a complete character.»
The link to asciitable.com should also be replaced by one which explains what character encoding it is displaying, as «Extended ASCII» is an ambiguous and misleading name.
Символ в число и обратно
Добрый вечер помогите пожалуйста!! Есть слово состоит из русских символов заглавных и нет, через ord я получаю номер какого либо символа слово находится в массиве и если эл. русский символ то я беру 2 значения и склеиваю их получается типа 208161 = С потом пытаюсь переделать 208161 обратно в символ и мне приходит какое левое значение помогите пожалуйста как это исправить.
Число в битной системе конвертировать обратно
Добрый вечер, помогите додумать как конвертировать лучше число сохранёное в битной системе.
16-тиричное число в символ
имееься строка типа: 07 D9 0C 02 0D 24 2B 00 2D B9 38 нужно приобразовать каждое число в.
Как разбить число посимвольно и достать последний символ?
Например есть переменная $a = 321; Как записать в переменную $b последний символ, то есть единицу?
Перевод числа в символ и обратно
Посмотрите пожалуйста! Точки совсем не меняются на числа. Что не так?? Вот задача: Мальчику Васе.
if (preg_match('/[а-я]+/msi', $val)) { $one_pa = ord($val[$i + $a-1]); $two_pa = ord($val[$i + $a]); } $number = "$one_pa$two_pa";
Тут получается число и теперь я пытаюсь его вернуть в начальный вид, но получается, что то другое.
Сообщение от Ozzys
И что это. В первом отрывке как минимум 3 переменные, которые берутся непонятно откуда и выглядят непонятно как. Во втором две (то есть ВСЕ которые там есть).
Я понимаю, что наговнокодил не обратил внимание, что все криво. У меня есть слово любое. Нужно получить номер каждого символа и к каждому номеру прибавить 1 и вернуть то что получилось в символ.
Добавлено через 52 секунды
Помогите как это грамотно реализовать
Сообщение от Ozzys
Я понимаю, что наговнокодил не обратил внимание, что все криво. У меня есть слово любое. Нужно получить номер каждого символа и к каждому номеру прибавить 1 и вернуть то что получилось в символ.
$s1 = "Слово"; $s2 = ""; for ($i = 0; $i strlen($s1); $i++) $s2.=chr(ord($s1[$i])+1); echo $s2;
Добавлено через 1 минуту
спс вроде понял
Сообщение от Ozzys
Как вернуть символ обратно в поток ввода
Добрый день. Подскажите, пожалуйста, аналог функции cin.putback() из C++, которая возвращает.
Как из char переделать обратно в символ в ответе
Всем привет. Есть такое задание: "Дан символьный массив А. Определить для каждого символа массива.
Пользователь вводит целое число n и ДВА символа. Программа выводит на экран последовательно символ №1 и символ
Пользователь вводит целое число n и ДВА символа. Программа выводит на экран последовательно символ.
Определить введенный символ: число, прописная буква, строчная, знак сравнения или математический символ
Написать программу которая запрашивает ввод любого символа, а после определяет его и выводит на.