C# 中,String在不提前转换为byte[]的情况下,如何提前知道转换后的Byte[]长度???

问题描述

如题,有没有什么简便方法?

解决方案

本帖最后由 yellowgiutou 于 2015-03-16 17:09:55 编辑
解决方案二:

解决方案三:
那你用正则来匹配出,全角与半角全角=2字节半角1字节。就是了
解决方案四:
如果你能确定汉字到底被转换成几个字节,还可以先正则匹配出所有的汉字和中文标点,然后中文字符和英文字符分别乘以不同的系数,来进行计算否则你还不如转换了,要维护一个什么汉字几个字节的表更麻烦
解决方案五:
引用2楼wyd1520的回复:

那你用正则来匹配出,全角与半角全角=2字节半角1字节。就是了

这不一定吧,看是什么编码我记得UTF8汉字是3个字节啊
解决方案六:
Unicode好像有的汉字2字节,有的汉字4字节,不一定
解决方案七:
引用4楼Z65443344的回复:

Quote: 引用2楼wyd1520的回复:
那你用正则来匹配出,全角与半角全角=2字节半角1字节。就是了

这不一定吧,看是什么编码我记得UTF8汉字是3个字节啊

你说的对。那看他用什么编码了。GB23122个字节,UTF83个字节
解决方案八:
我觉得正则挨个匹配出来,效率不一定比直接转字节数组高吧其实还不如直接转了再判断
解决方案九:
猜对了难道有奖吗?不真正去查看byte[]内容,但是要数出来byte[]的个数,解决题目可以为你的程序多卖1毛钱还是会让程序整体运行速度快1秒钟呢?
解决方案十:
不转byte[],那你起码也要确定用什么编码。不同编码转换的Byte[]长度是不一样的。Encoding类型除了GetBytes()方法,还提供了GetBytesCount()方法,让你在取得实际byte[]之前预知长度。
解决方案十一:
引用8楼sp1234的回复:

猜对了难道有奖吗?不真正去查看byte[]内容,但是要数出来byte[]的个数,解决题目可以为你的程序多卖1毛钱还是会让程序整体运行速度快1秒钟呢?

是否能够多卖钱,是否能够快1秒,就不劳你费心了!有思路可以解决可以说,没有也请不要带刺,谢谢~!

时间: 2024-10-31 16:58:41

C# 中,String在不提前转换为byte[]的情况下,如何提前知道转换后的Byte[]长度???的相关文章

极线校正-计算机视觉中给定两幅图像以及投影矩阵情况下,如何计算极线影像?

问题描述 计算机视觉中给定两幅图像以及投影矩阵情况下,如何计算极线影像? 已知条件只有两幅影像和对应投影矩阵,我通过查阅资料发现采用stereoRectify函数可以进行极线校正,最后得到极线影像(就是水平对齐,y视差为0),那么在输入函数参数中,我有以下几个问题: 1.cameraMatrix1,R,T是否可以直接用投影矩阵P分解得到?就是对应的K R T么? 2.distCoeffs参数怎么获取得到呢?或者是默认不存在畸变? 3.本人采用的方法是否正确,就是采用stereoRectify此方

仿真-本地连接服务器中的硬件,如何实现不连接情况下本地程序正常运行

问题描述 本地连接服务器中的硬件,如何实现不连接情况下本地程序正常运行 本地需连接远程服务器中的硬件,如何在本地可以实现模拟这种硬件,这样本地的程序才可以跑起来...据说是仿真,端口模拟,如何实现呢???

iframe标签显示PDF文档问题(为什么在web容器中只有框没有内容,在一般情况下就可以正常显示)

问题描述 iframe标签显示PDF文档问题(为什么在web容器中只有框没有内容,在一般情况下就可以正常显示) 问题是这样的,我在电脑中新建一个HTML文件用iframe显示PDF文件时候,可以正常显示,但是一旦将其导入到tomcat容器中的WEB项目中时,从WEB项目启动后,就只显示框框,没有内容 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

link中除了二维数组,还有什么情况下可以在数组后面再跟上数组?

问题描述 link中除了二维数组,还有什么情况下可以在数组后面再跟上数组? link中除了二维数组,还有什么情况下可以在数组后面再跟上数组? 解决方案 只要支持索引器的都可以,比如说 List<int[]> List<int>[] List<List<int>> int[][]

mac-phpems安装完成后在localhost中打不开,这是什么情况,

问题描述 phpems安装完成后在localhost中打不开,这是什么情况, phpems安装完成后在localhost中打不开,这是什么情况,我的电脑是mac,是因为权限问题么,如果是该怎么改权限

c#-[C#] byte.parse中调试过程中报字符串转换为DataTime时的错误

问题描述 [C#] byte.parse中调试过程中报字符串转换为DataTime时的错误 如图提示 解决方案 用字符串 68 86 20 05 00 00 00 68 11 04 00 01 01 02 测试能通过 但是用字符串 FE FE 68 86 20 05 00 00 00 68 91 06 33 34 34 35 34 57 6D 16 测试报这个错误

java中String的一些方法深入解析

以下是对java中String的一些方法进行了详细的分析介绍,需要的朋友可以参考下   1.public String(char[] c,begin,length).从字符数组c的下标begin处开始,将长度为length的字符数组转换为字符串. begin与length可以省略,即将字符数组c转换为字符串.另:字符数组可改为字节数组byte[] b.char[] c=new char[]{'j','y','6','a','4','t','9'}; String s1=new String(c)

基于java中byte数组与int类型的转换(两种方法)_java

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

java中string字符串操作程序整理

String的两种实例化方法 String本身是一个类,在String类中定义了如下的构造方法: public String (String original) 可以接收一个String类的对象,并重新实例化String对象,除了此方法之外,String还可以采用直接赋值的方式进行对象的实例化.  代码如下 复制代码 public class StringDemo01{  public static void main(String args[]){   String str1 = "hello