- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
function utf8_win ($s){
$out="";
$c1="";
$byte2=false;
for ($c=0;$c<strlen($s);$c++){
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2){
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025){
$out_i=168;
}else{
if ($new_i==1105){
$out_i=184;
}else {
$out_i=$new_i-848;
}
}
$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6) {
$c1=$i;
$byte2=true;
}
}
return $out;
}
iconv не по мне..., я лучше с побитовыми операциями поработаю, зато сам!
Гораздо медленее правда, зато своё!
burdakovd 22.11.2010 17:03 # 0
Lure Of Chaos 22.11.2010 17:14 # 0
burdakovd 22.11.2010 18:04 # 0
я к тому, что
$new_c2 = (($c1 & 3) << 6) | ($i & 63);
$new_c1 = ($c1 >> 2) & 5;
$new_i = ($new_c1 << 8) | $new_c2;
Ну или
$new_i = (($c1 & 23) << 6) | $i & 63
вместо всего этого
К чему использовать +, * в битовых операциях?
dwinner 22.11.2010 18:14 # 0
burdakovd 22.11.2010 18:20 # +1
Какая-то функция нужна, сначала полчаса ищу по интернетам где же она уже реализована, потом ещё столько же подключаю к проекту библиотеку (в которой помимо этой функции ещё куча всего), хотя функцию можно было написать самому за пару минут=)
Например apache-commons ради StringUtils.join.
Анонимус 22.11.2010 18:32 # −1
+1;))
dwinner 22.11.2010 17:57 # 0
Между прочим, специально забыл!
AxisPod 23.11.2010 07:40 # 0
istem 22.11.2010 17:56 # +2
dwinner 22.11.2010 20:27 # 0
istem 22.11.2010 20:30 # 0
dwinner 22.11.2010 23:47 # 0
<?php
# bla bla bla...
$imgfile = URL_PATH.'palette.png';
$img = imagecreatefrompng($imgfile);
$offsetx = is_numeric($_GET['offsetx']) ? intval($_GET['offsetx']) : 0;
$offsety = is_numeric($_GET['offsety']) ? intval($_GET['offsety']) : 0;
$rgb = imagecolorat($img, $offsetx, $offsety);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
printf('#%02s%02s%02s', dechex($r), dechex($g), dechex($b));
?>
istem 23.11.2010 01:10 # 0
dwinner 23.11.2010 07:51 # 0
Vasiliy 23.11.2010 09:29 # 0
:) да всяким сишникам лень разбирать байт по полям вот сам с усам :)
istem 23.11.2010 12:02 # 0
--
я про интерпретаторы говорю.. работа с битами в циклах.
Однажды встретил кусок php кода, обрабатывающий изображение формата bmp по строчкам, по пикселям... Вот это было действительно монструально. Кажется автор заявлял, что с картинкой 1024х768 скрипт работал около двух минут...
andremacareno 22.11.2010 19:34 # −6
UTF-8 - вин!
---
А что, интерпретатор PHP уныло обрабатывает операции с битами? Я думал, что в итоге получается машинный код, в котором все делается быстро :(
burdakovd 22.11.2010 20:06 # 0
burdakovd 22.11.2010 20:08 # 0
Поэтому ты хоть биты гоняй, хоть double умножай, хоть строки конкатенируй, всё равно будет долго=)
Анонимус 23.11.2010 12:29 # +2