打印日志和宽字节转多字节

  1. #include<stdio.h>  
  2. #include<time.h>  
  3. ///可兼容打印tchar字符串  可用cw2a格式转换
  4. #define TRACEOUT(p) \  
  5. {                   \  
  6.     time_t timeval; \  
  7.     timeval=time(NULL); \  
  8.     FILE *log;      \  
  9.     log = fopen("log.txt","a");\  
  10.     fprintf(log,"%s   -- %s\n",p,ctime(&timeval));\  
  11.     fclose(log);    \  
  12. }  
  13.   
  14. int main()  
  15. {  
  16.  TRACEOUT("hello");  
  17.  return 0;     
  18. }  




//////打印tchar会出错
//////cyrlog
{
CStdioFile filelog(_T("c:\\log10.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
filelog.SeekToEnd();//先定位到文件尾部
CString strTmp;
strTmp.Format(_T("hehe\r\n"));
filelog.WriteString(strTmp);
filelog.Close;
}
//////cyrlog





//////////////////////宽字节转换为多字节
///////////////1
char cName[1024]={0};
WideCharToMultiByte(CP_ACP,0,szMainIndex,-1,cName,sizeof(cName),NULL,NULL);
//////////////////2
char* pszLog=cw2a(szNum);


在编程中,将字节数组换为字符串并打印是一个常见的需求,尤其是在处理网络通信、文件操作或加密解密时。不同的编程语言提供了各自的方法来实现这一功能。以下是一些主流编程语言中的实现方式: ### C# 在C#中,可以使用`Encoding`类将字节数组换为字符串。默认情况下,可以使用系统当前的编码格式(如UTF-8),也可以显式指定编码方式。 ```csharp byte[] byteArray = System.Text.Encoding.UTF8.GetBytes("Hello, World!"); string str = System.Text.Encoding.UTF8.GetString(byteArray); Console.WriteLine(str); // 打印字符串 ``` ### Java Java 提供了构造函数 `String(byte[], Charset)` 来将字节数组换为字符串,并且推荐使用 `StandardCharsets` 来指定字符集,例如 UTF-8。 ```java import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) { String original = "Hello, World!"; byte[] byteArray = original.getBytes(StandardCharsets.UTF_8); String str = new String(byteArray, StandardCharsets.UTF_8); System.out.println(str); // 打印字符串 } } ``` ### Python Python 中的字节数组可以直接使用 `decode()` 方法将其换为字符串,通常使用 UTF-8 编码。 ```python byte_array = b'Hello, World!' str_value = byte_array.decode('utf-8') print(str_value) # 打印字符串 ``` ### JavaScript (Node.js) 在 Node.js 环境中,可以使用 `Buffer` 对象来处理字节数组,并通过 `toString()` 方法将其换为字符串。 ```javascript const buffer = Buffer.from('Hello, World!', 'utf-8'); const str = buffer.toString('utf-8'); console.log(str); // 打印字符串 ``` ### 字节数组换为十六进制字符串 有时为了调试或者日志记录的需求,可能需要将字节数组换为十六进制字符串。以下是 Java 中的一个示例方法: ```java public static String encodeHexString(byte[] data) { StringBuilder sb = new StringBuilder(); for (byte b : data) { sb.append(String.format("%02x", b)); } return sb.toString(); } ``` 调用该方法后,可以将返回的十六进制字符串打印出来用于调试。 ### 注意事项 - 在进行字节数组与字符串之间的换时,确保使用的字符集一致,否则可能会导致乱码。 - 如果字节数组包含非文本数据(例如图像或音频数据),直接换为字符串可能会导致不可读的结果,此时建议使用十六进制表示或其他二进制友好的格式[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值