
将一段十六进制数写入文件需要将其按字节顺序转换为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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)