如何在PHP中对字节数组进行编码
How to encode array of bytes in PHP
我正在尝试用PHP编码一个字节数组,并使用带有ACE的C++将其解码为字节数组(ACE_byte*=无符号char*),但迄今为止没有成功。我的猜测是PHP中的编码不太好用,因为解码很简单:我尝试了下面的编码,但没有成功。有人能帮我找到一个好的编码方法吗?
/// Encoding in PHP
public function EncodeArray(){
$myArray = array();
$myArray[0] = 'A';
$myArray[1] = 'B';
$myArray[2] = 'C';
$myArray[3] = 15;
$myArray[4] = 250;
//First try
$serialized = serialize($myArray);
$mySerializedString = base64_encode($serialized);
return $mySerializedString;
//Second try
$imploded = implode($myArray);
$myImplodedString = base64_encode($imploded);
return $myImplodedString;
//Third try
$packed = pack('C*',$myArray);
$myPackedString = base64_encode ($packed);
return $myPackedString;
}
///Decoding in C++ using ACE library
bool DecodeString(std::string& myString)
{
size_t uiLength;
const ACE_Byte* p_myArray = ACE_Base64::decode((const ACE_Byte*)myString.c_str(),&uiLength);
if(p_myArray == NULL)
{
return false;
}
return true;
}
我找到了解决方案。正如@VolkerK提到的那样(谢谢!)——使用字符串而不是字符。此外,包装的使用应该有所不同:
/// Encoding in PHP
public function EncodeArray(){
$myArray = array();
$myArray[0] = ord('A'); //or a number, like: 0x40;
$myArray[1] = ord('B');
$myArray[2] = ord('C');
$myArray[3] = 15;
$myArray[4] = 250;
$Length = 5;
for($i = 0; $i < $Length; $i++)
{
//concat the string
$myPackedString = $myPackedString . pack('C',$myArray[$i]);
}
$myPackedString = base64_encode ($myPackedString);
return $myPackedString;
}
相关文章:
- 输出没有重复元素的动态数组(收缩数组)C++
- 将字符串转换为无符号字符数组/字节数组
- 检查彩虹数组(检查数组的反向样式是否与自身匹配)
- 如何创建对齐的数组 c++ 数组?
- 查找数组中数组元素的重复出现?
- C++释放带有子数组的数组的内存分配
- 返回一个数组,该数组包含数组中的数量,该数组数量较小或等于给定数组中的元素
- 通过键盘输入字符串数组和 int 数组的数组大小
- 如何在C 中创建类似于Python的Numpy数组的数组
- 无法获取数组内数组的总和
- C4838 警告,包含常量字符* 数组的数组初始化
- 连接数组,数组 1 内存消失C++
- 如何在C++中创建二维数组的数组
- 获取字符数组C++数
- 2D数组中数组下标的类型"int[int]"无效
- C 模板类动态数组的数组到数组
- 结构数组的数组
- 如何制作具有动态大小的数组?动态数组的一般用法(可能还有指针)
- 对象的数组-STD ::数组 - 构造函数初始化问题
- 使用SSE内部函数将布尔数组(8字节布尔)转换为int或char