导航:首页 > 编程语言 > phpbytetostring

phpbytetostring

发布时间:2023-08-16 16:34:18

⑴ 如何在php中使用socket+XML发送数据包

接收指定IP的数据包,其他IP都要过滤吧,那就用防火墙来搞吧
使用的是client段的获取方式,用client的可以指定IP,代码大概如下

public void SendMessage()

{

ASCII = Encoding.ASCII;

// 构造用于发送的 字节缓冲.

Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);

// 构造用于接收的 字节缓冲.

Byte[] recvBytes = new Byte[256];

// IP地址.

IPAddress localAddr = IPAddress.Parse("192.168.19.81");

// 接入点.

IPEndPoint ephost = new IPEndPoint(localAddr, PORT);

// 第一个参数:AddressFamily = 指定 Socket 类的实例可以使用的寻址方案。

// Unspecified 未指定地址族。

// InterNetwork IP 版本 4 的地址。

// InterNetworkV6 IP 版本 6 的地址。

//

// 第二个参数:SocketType = 指定 Socket 类的实例表示的套接字类型。

// Stream 一个套接字类型,支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界。

// 此类型的 Socket 与单个对方主机通信,并且在通信开始之前需要建立远程主机连接。

// 此套接字类型使用传输控制协议 (Tcp),AddressFamily 可以是 InterNetwork,也可以是 InterNetworkV6。

//

// 第三个参数:ProtocolType = 指定 Socket 类支持的协议。

// Tcp 传输控制协议 (TCP)。

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

try

{

// 尝试连接主机.

s.Connect(ephost);

//Console.WriteLine("向服务器发送到了:{0}", SEND_MESSAGE);

// 向主机发送数据.

// s.Send(sendBytes, sendBytes.Length, SocketFlags.None);

// 接收服务器的应答.

Int32 bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

StringBuilder buff = new StringBuilder();

// while (bytes > 0)

// {

// 将缓冲的字节数组,装换为字符串.

// String str = ASCII.GetString(recvBytes, 0, bytes);

String str = "";

for (int i = 0; i < recvBytes.Length; i++)

{

str = str + recvBytes[i];

}

int iCount = 0;

iCount = int.Parse(str.Substring(13, 6)) ;

// 加入字符串缓存

buff.Append(str);

// 再次接受,看看后面还有没有数据.

//bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);

// }

textBox1.Text = iCount.ToString();

}

catch (Exception ex)

{

MessageBox.Show("连接/发送/接收过程中,发生了错误!");

MessageBox.Show(ex.Message);

//Console.WriteLine("连接/发送/接收过程中,发生了错误!");

//Console.WriteLine(ex.Message);

//Console.WriteLine(ex.StackTrace);

}

finally

{

s.Close();

}

⑵ php处理字节流

字节流是由字节组成的,
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的

字符流和字节流都是什么
流就是stream. 一个连续的字节队列。

流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件

流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。
从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成 。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。

字节流与字符流主要的区别是他们的的处理对象

字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.

字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang

流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。

⑶ php截取字符串之截取utf8或gbk编码的中英文字符串示例

php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求,下面给大家提供一个方法来完成这样的功能
微博的发言有字数限制,其计数方式是,中文算2个,英文算1个,全角字符算2个,半角字符算1个。
php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求。
mb_strlen
可以根据字符集计算长度,比如utf8的中文计数为1,但这不符合微博字数限制需求,中文必须计算为2才可以。
google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset
只支持gbk与utf-8。

代码如下:
$a
=
"s@@你好";
var_mp(strlen_weibo($a,'utf-8'));

结果输出为8,其中字母s计数为1,全角@计数为2,半角@计数为1,两个中文计数为4。源码如下:

代码如下:
function
strlen_weibo($string,
$charset='utf-8')
{

$n
=
$count
=
0;

$length
=
strlen($string);

if
(strtolower($charset)
==
'utf-8')

{

while
($n
<
$length)

{

$currentByte
=
ord($string[$n]);

if
($currentByte
==
9
||

$currentByte
==
10
||

(32
<=
$currentByte
&&
$currentByte
<=
126))

{

$n++;

$count++;

}
elseif
(194
<=
$currentByte
&&
$currentByte
<=
223)

{

$n
+=
2;

$count
+=
2;

}
elseif
(224
<=
$currentByte
&&
$currentByte
<=
239)

{

$n
+=
3;

$count
+=
2;

}
elseif
(240
<=
$currentByte
&&
$currentByte
<=
247)

{

$n
+=
4;

$count
+=
2;

}
elseif
(248
<=
$currentByte
&&
$currentByte
<=
251)

{

$n
+=
5;

$count
+=
2;

}
elseif
($currentByte
==
252
||
$currentByte
==
253)

{

$n
+=
6;

$count
+=
2;

}
else

{

$n++;

$count++;

}

if
($count
>=
$length)

{

break;

}

}

return
$count;

}
else

{

for
($i
=
0;
$i
<
$length;
$i++)

{

if
(ord($string[$i])
>
127)

{

$i++;

$count++;

}

$count++;

}

return
$count;

}
}

⑷ Java代码如何反序列化PHP序列化数组后的字符串

public class ByteTest { public static void main(String[] args) { String str = "Hello world!"; // string转byte byte[] bs = str.getBytes(); System.out.println(Arrays.toString(bs)); // byte转string String str2 = new String(bs); System.out.println(str2); } }

⑸ php中字符串转化为整形的函数是

字符串转换为数值
当一个字符串被当作数字来求值时,根据以下规则来决定结果的类型和值。

如果包括“.”,“e”或“E”其中任何一个字符的话,字符串被当作 float 来求值。否则就被当作整数。

该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。合法数字数据由可选的正负号开始,后面跟着一个或多个数字(可选地包括十进制分数),后面跟着可选的指数。指数是一个“e”或者“E”后面跟着一个或多个数字。

<?php
$foo = 1 + "10.5"; // $foo is float (11.5)
$foo = 1 + "-1.3e3"; // $foo is float (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is integer (1)
$foo = 1 + "bob3"; // $foo is integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
$foo = "10.0 pigs " + 1; // $foo is float (11)
$foo = "10.0 pigs " + 1.0; // $foo is float (11)
?>
此转换的更多信息见 Unix 手册中关于 strtod(3) 的部分。

⑹ 现在想用php端做一个流媒体出来(m3u8),一点思路也没有,大家给点意见好吗

首先是要搞清m3u8文件头信息,然后可以用二进制字节数组来实现,如我用二进制做的图片程序:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Diagnostics;
namespace BMP
{
class Program
{
static void Main(string[] args)
{
int w = 800; int h =600;
//BMP文件头信息:
long s3 = w * h * 3;
byte[] b = new byte[s3 + 54]; //image.bmp图片文件总字节数;
putByte(18, w, b);
putByte(22, h, b);
putByte(34, s3, b);
putByte(2, s3 + 54, b);
putByte(0, 0x42, b);
putByte(1, 0x4d, b);
putByte(10, 0x36, b);
putByte(14, 0x28, b);
putByte(26, 0x01, b);
putByte(28, 0x18, b);
//查看BMP头文件:
//for (int i = 0; i < 0x36;i++ )
//{
//Console.Write("{1:X2},",b[i]);
// if ((i+1) % 16 == 0) Console.WriteLine();
//}
//对各像素颜色赋值(上背景色):
for (int i = 0; i < s3 - 2; i += 3)
{
long p = i + 0x36;
b[p] = (byte)(i/(10*h)); //blue
//b[p + 1] = 150; //green
b[p + 2] = (byte)(i/(10*h)); //red
}
//画n个渐变色的圆:
for (int r = 0; r <300; r++)
{
for (double q = 0; q < 36.28; q += .01)
{
int x0 = 400; int y0 = 100;
int x = (int)(x0 + r * Math.Sin(q*.5));
int y = (int)(y0 - .2*r* Math.Cos(q*2));
long p =(long)(3 * (w * y + x) + 0x36);
if (p <= s3-2 && p >= 0) b[p] = (byte)(r *5); //blue
if (p <= s3-2 && p >= 0) b[p + 1] = (byte)(r*3); //green
if (p <= s3-2 && p >= 0) b[p + 2] = (byte)(255 - r); //red
}
}
//保存为二进制文件:
FileStream filesstream = new FileStream("image.bmp", FileMode.Create);
BinaryWriter objBinaryWriter = new BinaryWriter(filesstream);
foreach (byte index in b)
{
objBinaryWriter.Write(index);
}
objBinaryWriter.Close();
filesstream.Close();
//打开文件:
Process.Start("image.bmp");
//Console.ReadKey();
}
//转十六进制字节流:
static void putByte(long p, long v, byte[] b)
{
string hexString = Convert.ToString(v, 16);
if ((hexString.Length % 2) != 0)
hexString = "0" + hexString;
int gc = hexString.Length / 2;
for (int i = 0; i < gc; i++)
{
b[gc + p - i - 1] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
}
}
}

阅读全文

与phpbytetostring相关的资料

热点内容
空调压缩机接头 浏览:372
安卓命令代码大全 浏览:11
明日之后在同一个服务器为什么看不见好友 浏览:699
python日期减一个月 浏览:395
手游网络游戏安装包可以编译吗 浏览:853
氧气是压缩气体吗 浏览:877
电脑蹦出文件夹 浏览:753
安徽ipfs云服务器 浏览:515
acmc用什么编译器 浏览:230
golangweb编译部署 浏览:923
怎样踩东西解压 浏览:969
单片机核心板外接键盘 浏览:396
怎样打开自己的微信文件夹 浏览:424
单片机红外测距原理 浏览:268
phpxdebug扩展 浏览:757
建筑楼层净高算法 浏览:1000
怎么关闭智联app求职状态 浏览:418
pdf的文件夹怎么打印 浏览:752
延拓算法初值 浏览:786
首次适应算法都不满足的话怎么办 浏览:19