当前位置: 首页 > 知识库问答 >
问题:

在php中从ascii转换为十六进制

邵麒
2023-03-14

我试图在PHP中从ASCII转换为十六进制,但得到的结果与一些可用的在线工具不同。我知道我正在寻找的结果,所以在线工具的结果似乎是正确的,我的代码是错误的,但我无法找出原因。

String:         2Ffbj?DoyXOU
Correct output: 32 46 66 62 6a 3f 44 6f 79 58 4f 55 (from linked site above)
My output:      32 46 66 62 6a 3f 44 6f 79 58 4f 75

我的剧本:

echo bin2hex(utf8_decode("2Ffbj?DoyXOU"));

错在哪里?

共有3个答案

许照
2023-03-14

感谢Patrick Maciel的好答案。现在如果使用PHP 7.4,可能会出现错误消息“不再支持带花括号的数组和字符串偏移访问语法”。用“[”和“]”代替“{”和“}”可以解决问题。

参考:不推荐使用带大括号的数组和字符串偏移量访问语法

洪高阳
2023-03-14

试试这个:

function ascii2hex($arg){
   return implode(" ",array_map(fn($x) => sprintf("%02s",strtoupper(dechex(ord($x)))),str_split($arg)));
}
刘运浩
2023-03-14

使用以下命令:

function ascii2hex($ascii) {
  $hex = '';
  for ($i = 0; $i < strlen($ascii); $i++) {
    $byte = strtoupper(dechex(ord($ascii{$i})));
    $byte = str_repeat('0', 2 - strlen($byte)).$byte;
    $hex.=$byte." ";
  }
  return $hex;
}

结果:

 类似资料:
  • 问题内容: 我正在编写一个go程序,将十六进制转换为int,binary和ascii。int和二进制文件工作正常,但是ascii引起了问题。如果输入的文本少于2个字符,则可以正常工作,但是如果输入的文本过多,则会导致出现格式错误的文本。我的代码如下: 输入十六进制“ 73616d706c65 ” 时的一些输出示例: 我已经做了很多搜索,并且看到了一些有关“符文”的文档,但是我不确定这是如何工作的。

  • 问题内容: 可以说我有一个字符串。 这是ASCII字母的十六进制表示。 我需要知道一个Linux shell命令,该命令将接受一个十六进制字符串并输出该字符串表示的ASCII字符。 因此,如果我这样做: 我会看到一封单独的信: 问题答案: 请注意,这不会跳过非十六进制字符。如果只需要十六进制(原始字符串中没有空格等): 此外,并在以下方面提供本机支持:

  • 我想知道如何将舞蹈方法的十进制结果包含到灯光方法中。例如,在这个程序中,如果我输入5F,十进制结果将是95。我希望95在light方法中显示为静态int变量,以便转换为二进制数。如果你能告诉我如何将十六进制数限制在2位数以内,那也会很有帮助。感谢阅读! } }

  • 我需要转换十六进制- 当我运行这个错误实际上是显示我需要的值但我不能得到它 groovy.lang.的方法:静态java.lang.我nteger.parseInt()适用于参数类型:(java.math.大整数,java.lang.整数)值:[28855032353026779507009821653742961358,...]可能的解决方案:parseInt(java.lang.String,

  • 问题内容: 我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印。我该如何解决? 问题答案: 如果要自己编写此代码而不是使用内置函数,则可以在打印当前数字之前简单地进行递归调用:

  • 问题内容: 我有兴趣选择一个角色, 输出: 最简单的方法是什么?任何预定义的字符串库的东西? 问题答案: 要在Python 3中使用编码,请使用 在旧版Python中,还有其他几种方法可以执行此操作: