如何将一段十六进制数写入文件中

如何将一段十六进制数写入文件中,第1张

将一段十六进制数写入文件需要将其按字节顺序转换为ASCII码字节(0-255)流才能写入文件。

如果仅是一段可将十六进制字符串写入文件中,这样只是写入字符串而已。

不同的编程软件有不同的处理方法,文件仅是保存二进制信息于储存设备如硬盘上。

估计你是用的tcp socket,导致“videlord”网友说的情况:对于tcp socket,send与recv不是对等的,recv时只要缓冲有数据就会收上来。简单说就是你send 4次,比如分别为10 10 10 10字节,对端可以一次recv到这40字节数据,也可以recv 40次、每次1字节。

解决办法有两种:

改用udp socket,send/recv自然对等了

继续用tcp socket,自己进行数据分段:比如自行约定在数据前约定4个字节用于描述数据长度,这样发送时,send 4+33字节,send 4+35字节;接收时,先获取描述长度的4字节获得长度,再按照长度接收数据(可能需要多次recv凑齐指定长度)。

可以用转换的方法,调用一个转换子程序:

@echo off

...

set HEX=0x3C

set HEX

pause>nul

exit

::结果显示HEX=60

@echo off

...

set HEX=0x3C

call :十六进制数转换

set HEX

pause>nul

exit

::**************************************************

:: 输入:HEX(D) 输出:HEX(H)

::**************************************************

:十六进制数转换

set /a VH=HEX/16

set /a VL=HEX"&"0x0F

set HEX=%VH%

call :显示转换

set VH=%HEX%

set HEX=%VL%

call :显示转换

set VL=%HEX%

set HEX=%VH%%VL%

goto :eof

::***************************************************

:显示转换

if %HEX%==10 set HEX=A

if %HEX%==11 set HEX=B

if %HEX%==12 set HEX=C

if %HEX%==13 set HEX=D

if %HEX%==14 set HEX=E

if %HEX%==15 set HEX=F

goto :eof

::***************************************************

::结果显示HEX=3B


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8998709.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存